p?test
p に適合し,test を適用するとTrueを返すような任意の式を表すパターンオブジェクトである.
PatternTest 
p?test
p に適合し,test を適用するとTrueを返すような任意の式を表すパターンオブジェクトである.
詳細
- True以外の test[pval]の結果は,失敗を意味するとみなされる.
- 演算子?には,高い計算順位が与えられている.したがって,_^_?tは,_^(_?t)であり,(_^_)?tではない.
- __?test のような形式では,__にマッチする列の要素は test が適用されるたびにTrueを返さなければならない.
- PatternTestは属性HoldRestを有する.
例題
すべて開く すべて閉じる例 (3)
NumberQ検定を満足する任意の式の例を求める:
Cases[{1, 2, 3.5, x, y, 4}, _ ? NumberQ]MatchQ[{1, E, Pi}, {__ ? Positive}]MatchQ[{1, I, 0}, {__ ? Positive}]f[x_ ? NumericQ] := NIntegrate[Sin[t ^ 3], {t, 0, x}]f[2]f[(1 + Sqrt[2]/5)]f[a]スコープ (6)
{3, -5, 2, 7, -6, 3} /. _ ? Negative :> 0Cases[Range[0, 70], _ ? (Divisible[#, 7]&)]Cases[Range[0, 350], _ ? (Divisible[#, 7] && Divisible[#, 5]&)]Cases[Range[0, 35], _ ? (Divisible[#, 7] || Divisible[#, 5]&)]f[n_ ? NonNegative, p_ ? PrimeQ] := n^pf[0, 3]f[2, 4]f[-1, 3]f[p_ ? (Negative[#] && PrimeQ[#]&)] := p ^ pf[-2]f[2]f[-4]複雑なパターンにPatternTestを使う:
MatchQ[{{a, b}, {c, d}}, {_, _} ? MatrixQ]MatchQ[{a, b}, {_, _} ? MatrixQ]Cases[Hold[Print[5], Sin, 2 + 2, 7, Sqrt[2]], _ ? (Function[{n}, NumberQ[Unevaluated@n], HoldAll])]NumberQだけを使うと各要素が評価される:
Cases[Hold[Print[5], Sin, 2 + 2, 7, Sqrt[2]], _ ? NumberQ]特性と関係 (2)
PatternTestは,検定関数をパターンに適用する.名前は特に必要ではない:
Cases[{{a, b}, {1, 2, 3}, {{d, 6}, {d, 10}}}, {_, _} ? VectorQ]Conditionは,パターンの名前付きの部分についてブール式を評価する:
Cases[{{a, b}, {1, 2, 3}, {{d, 6}, {d, 10}}}, {x_, y_} /; !ListQ[x] && !ListQ[y]]Exceptを使って,事実上PatternTestを否定する:
Replace[{1, 7, "Hi", 3, Indeterminate}, Except[_ ? NumericQ] :> 0, 1]考えられる問題 (1)
PatternTestは,ホールドされている式の一部である潜在的なマッチを評価する:
MatchQ[Hold[2 + 3], Hold[_ ? IntegerQ]]正規の評価規則のために,式は検定関数による検査の前に評価されることがある:
MatchQ[Hold[2 + 3], Hold[_ ? (IntegerQ[Unevaluated@#]&)]]Functionの3引数形式を使う.あるいはConditionを使ってこれを防ぐパターンを書く:
MatchQ[Hold[2 + 3], Hold[_ ? (Function[{n}, IntegerQ[Unevaluated@n], HoldAll])]]MatchQ[Hold[2 + 3], Hold[n_] /; IntegerQ[Unevaluated@n]]テクニカルノート
-
▪
- パターン適用範囲の制限 ▪
- 文字列パターン
関連するガイド
-
▪
- パターン ▪
- Wolfram言語のシンタックス
履歴
1988 で導入 (1.0)
テキスト
Wolfram Research (1988), PatternTest, Wolfram言語関数, 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_2026_patterntest, author="Wolfram Research", title="{PatternTest}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/PatternTest.html}", note=[Accessed: 24-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_patterntest, organization={Wolfram Research}, title={PatternTest}, year={1988}, url={https://reference.wolfram.com/language/ref/PatternTest.html}, note=[Accessed: 24-June-2026]}