PatternTest

p?test

is a pattern object that stands for any expression that matches p, and on which the application of test gives True.

Details

  • 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.

Examples

open allclose all

Basic Examples  (3)

Find cases of any expression that satisfies the NumberQ test:

Test whether a list has only positive elements:

Create a definition that only applies to numeric arguments:

Scope  (6)

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.

Text

Wolfram Research (1988), PatternTest, Wolfram Language function, https://reference.wolfram.com/language/ref/PatternTest.html.

CMS

Wolfram Language. 1988. "PatternTest." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PatternTest.html.

APA

Wolfram Language. (1988). PatternTest. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PatternTest.html

BibTeX

@misc{reference.wolfram_2023_patterntest, author="Wolfram Research", title="{PatternTest}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/PatternTest.html}", note=[Accessed: 19-March-2024 ]}

BibLaTeX

@online{reference.wolfram_2023_patterntest, organization={Wolfram Research}, title={PatternTest}, year={1988}, url={https://reference.wolfram.com/language/ref/PatternTest.html}, note=[Accessed: 19-March-2024 ]}