「正規表現」の版間の差分

削除された内容 追加された内容
33行目:
以下ではもっぱらよく使われているライブラリやツール等の実用的な観点から説明する。
 
例えば、「<ttcode>Handel</ttcode>」、「<ttcode>H'''e'''ndel</ttcode>」、「<ttcode>Ha'''e'''ndel</ttcode>」 という三つの文字列を含む集合は 「<ttcode>H(e|ae?)ndel</ttcode>」 というパターンで表現できる(あるいは、パターンは個々の三つの文字列に'''マッチする'''と言われる)。ほとんどの形式では、もし特定の集合にマッチする何らかの正規表現が存在すれば、無限の数のそのような表現がある。ほとんどの形式では正規表現を構築するのに次の[[演算子]]を提供している。
 
;選言
:縦棒は選択肢を区切る。例えば「<ttcode>gray|grey</ttcode>」は「<ttcode>gray</ttcode>」または「<ttcode>grey</ttcode>」にマッチし、これは普通 「<ttcode>gr(a|e)y</ttcode>」 に短縮される。
;グループ分け
:丸括弧はスコープと[[演算子]]の優先順位を定義するのに用いられる。例えば、「<ttcode>gr(a|e)y</ttcode>」 では 「<ttcode>(a|e)</ttcode>」 の部分で 「<ttcode>a</ttcode>」 または 「<ttcode>e</ttcode>」 を示し、全体で 「<ttcode>gray</ttcode>」 または 「<ttcode>grey</ttcode>」 にマッチする。
;量化
:文字やグループの後ろの量化子は、直前の表現が何回現れることが許されるかを指定する。非常によく使われる量化子は 「<ttcode>?</ttcode>」 と 「<ttcode>*</ttcode>」 と 「<ttcode>+</ttcode>」 である。
:;<ttcode>?</ttcode>
::[[疑問符]]は直前の表現が<u>0個か1個ある</u>ことを示す。例えば、「<ttcode>colou?r</ttcode>」 は 「<ttcode>color</ttcode>」 と 「<ttcode>colour</ttcode>」 にマッチする。
:;<ttcode>*</ttcode>
::[[アスタリスク]]は直前の表現が<u>0個以上ある</u>ことを示す。例えば、「<ttcode>go*gle</ttcode>」 は 「<ttcode>ggle</ttcode>」、「<ttcode>gogle</ttcode>」、「<ttcode>google</ttcode>」 などにマッチする。
:;<ttcode>+</ttcode>
::[[プラス符号]]は直前の表現が<u>1個以上ある</u>ことを示す。例えば、「<ttcode>go+gle</ttcode>」 は 「<ttcode>gogle</ttcode>」 や 「<ttcode>google</ttcode>」 などにマッチするが、「<ttcode>ggle</ttcode>」 にはマッチしない。
 
これらの構文は任意の複雑な表現を形成するために組み合わされて使用される。