パターンにマッチする式の検索

Cases[list,form]パターン form にマッチしたリスト list の要素を列挙する
Count[list,form]パターン form にマッチしたリスト list の要素の個数を返す
Position[list,form,{1}]パターン form にマッチしたリスト list の要素の位置を列挙する
Select[list,test]リスト list においてパターン判定式 testTrueとする要素を列挙する
Pick[list,sel,form]selform にマッチする list の要素を与える

パターンマッチにより要素を見付ける

パターンにマッチする要素を入力リストから検索させる.
In[1]:=
Click for copyable input
Out[1]=
マッチした要素がいくつあったか数えさせる.
In[2]:=
Click for copyable input
Out[2]=

Casesのような関数はリストだけでなく式にも有効である.レベルを限定しておくことで抽出する部分を特定することもできる.

Cases[expr,lhs->rhs]変換規則の左辺 lhs にマッチする式 expr の要素を検索し,検索された要素に変換規則を適用し,結果を列挙する
Cases[expr,lhs->rhs,lev]expr のレベル lev の部分を判定する
Count[expr,form,lev]expr のレベル lev にある,パターン form にマッチした部分の個数を返す
Position[expr,form,lev]expr のレベル lev にある,パターン form にマッチした部分の位置を列挙する

パターンマッチングによる式の部分の抽出

これは,による指数のリストを返す.
In[3]:=
Click for copyable input
Out[3]=
パターンは,どんな整数にもマッチする.この例では,すべてのレベルに現れる整数が検索され,結果がリスト形式で返される.
In[4]:=
Click for copyable input
Out[4]=
Cases[expr,form,lev,n]パターン form にマッチした,最初の n 個の部分だけを抽出する
Position[expr,form,lev,n]パターン form にマッチした,最初の n 個の位置を列挙する

抽出数が制限されたパターンマッチングによる式の部分抽出

レベルが何であれのベキ数である項を最初の2つまで検索して,リスト内の位置を求める.
In[5]:=
Click for copyable input
Out[5]=
「リスト」で述べているように,位置は,ExtractReplacePartのような関数で使われているのと全く同じ形式で指定できる.
In[6]:=
Click for copyable input
Out[6]=
DeleteCases[expr,form]パターン form にマッチした式 expr の要素を削除する
DeleteCases[expr,form,lev]lev で指定されたレベルにおけるパターン form にマッチした式 expr の要素を削除する

パターンマッチングによる式の部分削除

パターンにマッチしたリスト要素を削除する.
In[7]:=
Click for copyable input
Out[7]=
整数を全レベルから削除する.
In[8]:=
Click for copyable input
Out[8]=
ReplaceList[expr,lhs->rhs]exprlhs にマッチするすべての方法を求める

パターンマッチングによる式の組替え

まず,変換規則の左辺のパターンを使い,二項の和として組み替える.その後に,変換規則の右辺を適用する.
In[9]:=
Click for copyable input
Out[9]=
同じ要素のペアをすべて探し出す.三重ブランク()は要素の任意の列を表す.
In[10]:=
Click for copyable input
Out[10]=