IDEにおける正規表現
目的
正規表現は、文字よりもむしろパターンの検索に使用されます。たとえば、
以下の正規表現付きの $(名前) のような、
IDEプロパティファイル内の変数の検索が可能です。
\$([a-z.]+)
正規表現を用いての置換により、タグ付き表現を用いた複雑な変換が可能になります。
たとえば、カンマ ',' で区切られた2つの数字の順序を入れ替える (例:「12,3」を「3,12」とする)には、
置き換えられる文字列に \([0-9]+\),\([0-9]+\) を、
置き換える文字列に \2,\1 を、
それぞれ指定します。
書式
-
以下の特殊文字以外の文字は、自分自身と合致します。
(メタキャラクタ): . \ [ ] * + ^ $
-
. は、いかなる文字とも合致します。
-
\ は、これに続く文字が左または右丸かっこ、1から9までの数字、
あるいは左または右角かっこである場合を除き([7]、[8]、[9]を参照)、
これに続く文字と合致します。
これは他のすべてのメタキャラクタ、およびそれ自身に対する
エスケープ文字として使用されます。set ([4]) 内で使用される場合は、
これは通常の文字として扱われます。
-
[set] は、「set」内の文字の1つと合致します。
set内の最初の文字が "^" である場合、set内に含まれない文字と合致します。
速記法の S-E は、SからEまでの文字のセットの指定に使用されます。
特殊文字 "]" と "-" は、set内の最初の文字として現れる場合には、特別な意味はありません。
例:
[a-z] は任意の小文字のアルファベットと、
[^]-] は ] と - を除く任意の文字と、
[^A-Z] は大文字のアルファベットを除く任意の文字と、
[a-zA-Z] は任意のアルファベットと
それぞれ合致します。
たとえば、[ab]は文字aまたはbのいずれか1文字に合致しますから、c[ab]dは
文字列cad又はcbdのいずれかには合致しますが、
cd、caad、cbbdあるいはcabdには合致しません。
-
* : 閉鎖文字 (*) に続く [1] から [4] までの任意の正規表現
は、その形式のゼロまたはそれ以上の数の文字と合致します。
たとえば、a*は空白文字列、a、aa、aaa、aaaa等のいずれにも合致します。
なお、「任意の文字の0文字以上の連続文字列」を表すには普通、".*" を使います。
-
+ : 1またはそれ以上の数の文字と合致することを除き、[5] と同様です。
たとえば、a+はa、aa、aaa、aaaa等のいずれにも合致しますが空白文字列には
合致しません。「空白を除く任意の文字の1文字以上の連続文字列」を表すには
[^ ]+を使用することができます。
-
\(form\) のように囲まれた、[1] から [10] までの正規表現は、
formが合致するものと合致します。囲みの中身は、[8] および
パターンの置換用にで使用される、一連のタグを生成します。
タグ付き形式は、1から始まる数字で番号が付けられています。
例については上記の「カンマで区切られた2つの数字の順序を入れ替える方法」
の「置き換えられる文字列」を参照してください。
-
\ に1から9までの数字が続く表現は、直前のタグ付き正規表現 ([7])
が合致したものすべてに合致します。
例については上記の「カンマで区切られた2つの数字の順序を入れ替える方法」
の「置き換えられる文字列」を参照してください。
-
"\<" と "\>" はそれぞれ単語の先頭と末尾とを意味します.「単語」は文字 A-Z a-z
0-9 および _ で始まり、「単語」の前または後にはここで説明されている以外の
任意の文字が配置されていなければなりません。たとえば、\ は "Windows 98"、
"Windows XP" あるいは "Windows 3.1" の "Windows" には合致しますが、"Windows2000"
の "Windows" には合致しません。
-
合成正規表現 xy(ここでxとyは [1] から [10] の形式)は、
後にyの対が続く最長のxの対に合致します。
-
^ : ^ 文字で始まり、かつ/または $ 文字で終わる正規表現は、パターンマッチを行の先頭、
または行末に制限します。[anchors] パターンのほかの場所では、
^ と $ は通常の文字として扱われます。
たとえば、^$は「行の最初から最後まで一つも文字が含まれていないこと」、
すなわち空行を表します。また、^.*$は「任意の文字が任意個含まれている行」、
すなわち任意の行を表します。
謝辞
このドキュメントの大部分は、元々Ozan S. Yigitにより記述されました。
追加の部分は、Neil Hodgsonにより記述されました。
|