is a pattern object that stands for any expression that matches p, and on which the application of test gives True.
- Any result for test[pval] other than True is taken to signify failure.
- The operator ? has a high precedence. Thus _^_?t is _^(_?t), not (_^_)?t.
- In a form such as __?test, every element in the sequence matched by __ must yield True when test is applied.
- PatternTest has attribute HoldRest.
Examplesopen allclose all
Basic Examples (3)
Find cases of any expression that satisfies the NumberQ test:
Test whether a list has only positive elements:
Replace negative numbers with zero:
Find elements in a list that are divisible by 7:
Elements that are divisible by both 5 and 7:
Elements that are divisible by either 5 or 7:
Create a function that only evaluates when given a non-negative number and a prime:
Create a function that only evaluates for negative primes:
Use PatternTest on a complex pattern:
Search for numbers without allowing expressions to evaluate:
Just using NumberQ would allow each element to evaluate:
Properties & Relations (2)
PatternTest applies test functions to patterns, which need not have names:
Condition evaluates a Boolean expression on named parts of a pattern:
Use Except to effectively negate PatternTest:
Possible Issues (1)
PatternTest evaluates potential matches that are a part of a held expression:
Due to normal evaluation rules, expressions may evaluate before being examined by the test function:
Use the three-argument form of Function or write the pattern using Condition to prevent this:
Wolfram Research (1988), PatternTest, Wolfram Language function, https://reference.wolfram.com/language/ref/PatternTest.html.
Wolfram Language. 1988. "PatternTest." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PatternTest.html.
Wolfram Language. (1988). PatternTest. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PatternTest.html