正規表現
正規表現は、例えば「〜で始まり〜で終わる部分」というような、特定の条件の文字列を指定するのに使われます。
miでは、検索・置換機能のほか、見出し機能、
インデント機能などで使用可能です。
以下、miでの正規表現の仕様を説明します。基本的に、Perlの正規表現の仕様を参考にして作成しています。
文字に一致する正規表現
正規表現 | 一致する文字 |
---|---|
|
改行コード以外の任意の一文字 |
|
英数字、アンダーバー |
|
英数字、アンダーバー以外 |
|
数字 |
|
数字以外 |
|
スペース、改行、タブ |
|
スペース、改行、タブ以外 |
|
タブ |
|
改行(\n, \rどちらでも同じ) |
|
改行(\n, \rどちらでも同じ) |
|
文字範囲指定
記述例:英数字以外に一致
記述例:ひらがなに一致
|
|
この後に続く2文字を16進数アスキーコードとした文字 |
|
\x{}内の文字(0-9,A-F)を16進数Unicodeとした文字(U+10000以降も指定可能です) 記述例:「あ」に一致
|
|
\uの後の文字(0-9,A-F)を16進数Unicodeとした文字(U+10000以降も指定可能です) 記述例:「あ」に一致
|
|
この後に続く1文字についてaをアスキーコード1、zをアスキーコード26とした文字 |
|
その文字に一致します。漢字等も使用可能です。 |
|
その記号に一致します。 記述例:"("に一致
|
繰り返し
直前の文字、または、グループを、指定回数繰り返したものに一致します。
最長一致の場合、繰り返し数が最も多い文字列に一致します。
最短一致の場合、繰り返し数が最も少ない文字列に一致します。
たとえば、以下のサンプルテキストについて、 ""に囲まれた部分を最長一致、最短一致で、テキストの最初から検索した場合の結果は、それぞれ次のようになります。
サンプルテキスト:
"abc" and "def"
正規表現記述例:(最長一致)
".*"
→結果:"abc" and "def"に一致
正規表現記述例:(最短一致)
".*?"
→結果:"abc"に一致
正規表現 | 繰り返し数 |
---|---|
|
0回以上(最長一致) |
|
0回以上(最短一致) |
|
1回以上(最長一致) |
|
1回以上(最短一致) |
|
0回、または、1回(最長一致) |
|
0回、または、1回(最短一致) |
|
n回以上、m回以下(最長一致)※n,mは0以上65534以下の整数。n <= m |
|
n回以上、m回以下(最短一致)※n,mは0以上65534以下の整数。n <= m |
|
n回(最長一致)※nは0以上65534以下の整数。 |
|
n回(最短一致)※nは0以上65534以下の整数。 |
選択
正規表現 | 説明 |
---|---|
|
|より前に記述した正規表現と、|より後に記述した正規表現のいずれかに一致します。 記述例:
→結果:"東京"または"大阪"に一致 |
グループ
正規表現 | 説明 |
---|---|
|
()で囲んだ部分はグループとなります。
記述例:
<検索機能での記述例> 検索文字列:
置換文字列:
→結果:<h1>〜</h1>が、<h2>〜</h2>に置換される。 $nは見出し機能でも同様の意味で使用します。 なお、$0は正規表現に一致した文字列全体となります。 グループ番号の最大は100です。101番目以降のグループにはグループ番号が割り振られず、文字列も記憶されません。 |
|
グループ番号が割り振られません。繰り返しや選択の適用範囲を指定したいだけのときに使用します。 |
|
グループnの文字列と一致します。(後方参照) 記述例:
→結果:ab-ab, cc-ccなど、ハイフォンで区切って、同じ2文字が繰り返される文字列に一致 |
特定の位置に一致する正規表現
正規表現 | 一致対象 |
---|---|
|
段落の最初 |
|
段落の最後 |
|
単語の境界
|
|
単語の境界以外
|
その他
正規表現 | 説明 |
---|---|
|
先読み
正規表現regexpに一致するかどうかを(対象テキストを先読みして)チェックします。 |
|
否定先読み
正規表現regexpに不一致かどうかを(対象テキストを先読みして)チェックします。 記述例:
→結果:"東京"を含まない行に一致 記述例:
→結果:1000000以外の7桁の数字に一致 (対象テキストの先読みした部分は、この正規表現に一致した部分とはみなされず、正規表現置換の対象にもなりません。) |
|
コメントです。無視されます。 |