パターン
Javaプログラマー向けの注意事項
Wolfram言語のパターン言語を使うと,任意の記号構造のパターンを記述することができるため,強力な正規表現のような操作をあらゆる式およびあらゆる形式のデータに一般化することができます.
Pythonプログラマー向けの注意事項
Wolfram言語のパターン言語を使うと,任意の記号構造のパターンを記述することができるため,強力な正規表現のような操作をあらゆる式およびあらゆる形式のデータに一般化することができます.
パターンは式のクラスを表します.基本的なパターン構造_(「ブランク」と読みます)は任意の式を表します.
リストの中からパターンf[_]にマッチするものを見付けます:

Cases[{f[1], g[2], f[5], g[3]}, f[_]]

x_(x:_の短縮形)は,値が x と名付けられるパターンを表します:


Replace[f[100], f[x_] -> x + 5]

/.は「すべて置換」を意味します:

{f[1], g[2], f[5], g[3]} /. f[x_] -> x + 5

Javaプログラマー向けの注意事項
ここで示したような構造的メタプログラミングは,Wolfram言語の記号構造独特のものです.
Pythonプログラマー向けの注意事項
コードとデータを同様に扱う,このような構造的メタプログラミングは,Wolfram言語の記号構造独特のものです.
__(ダブルブランク)は任意の式の列を表します:

Cases[{f[1, 2], f[1], g[3]}, f[__]]

a | b | c は「a か b か c」を意味します:

Cases[{f[1], g[2], f[2], f[5], g[3]}, f[1 | 5]]

Javaプログラマー向けの注意事項
この|の使い方はJavaの正規表現の表記に似ていますが,Javaでは|はビット和を表すこともあります.
Pythonプログラマー向けの注意事項
|は,Pythonの正規表現で使われるのと同様にWolfram言語のパターンで使われます.しかし,Wolfram言語では,|は文字列だけではなく,どのようなタイプの記号的パターンにも使えます.
これは頭部でも使えます:

Cases[{f[1], g[2], f[2], f[5], g[3]}, (f | g)[2]]

_h は,頭部 h を持つ任意の式を表します:

Cases[{1, 2.5, 3.5, 4}, _Real]

参照:パターンを含む操作