| 事例 |
perl表現 |
解説 |
| Grep または grep |
[Gg]rep |
[]は、キャラクタクラスと言い、ブラケット(角括弧)で囲んだ文字のいずれかひとつとマッチすればマッチしたと判断 |
| 英単語 |
[a-zA-Z][a-zA-Z]* |
[](ブラケット)の中に「-」(マイナス)があれば、範囲指定を意味する [亜-K] は、漢字にマッチ [ァ-ヶ] 全角カタカナにマッチ [ぁ-ん] 全角ひらがなにマッチ * は、直前文字の0回以上の繰り返し |
| 変数名や関数名 |
[a-zA-Z0-9_-]+ または\w+ |
+ は、直前のパターンの1回以上の繰り返し \wは、半角の英数文字とアンダースコア(_下線)を示す、文字クラス エスケープ シーケンス(特殊変数) |
| 2004/4/17 の形式の日付 |
[0-9]{4}/[0-9]{1,2} /[0-9]{1,2} |
ブレース{n}で直前のパターンをn回繰り返し、 {n,}だとn回以上、 {m,n}で m回以上、n回以下にマッチ [0-9]は、特殊変数 \dでも良い |
郵便番号 123-1234 |
([0-9]{3})-([0-9]{4}) |
()は、パターンのグループ化。グループ化した部分の優先順位が高くなるので、パーレン(まる括弧)の中を評価した後に全体を評価します。 パーレンの中のパターンがバッファに保存できるので、置換に用います
|
| 空白行 |
^$ または^\n または^\r (ファイルの改行指定方法で異なる) |
^ カレットは、文字列(行)の最初に、 $ は、文字列(行)の最後にマッチする。 \nは、ニューライン = LF(\x0a) 改行(ラインフィード) \r:リターン = CR(\x0d) 改行(キャリッジリターン) |
| スペースを含む空白行 |
^\s*$ |
\s:スペース文字 = 半角スペース(\x20) , タブ文字(水平タブ(\x09),垂直タブ(\x0b)) , 改行(CR(\x0d),LF(\x0a)) , 改ページ(\x0c) \S:スペース文字以外 |
| 10文字の行 |
^.{10}$ |
. 改行文字以外の任意の1文字 |
| test または TEST |
test|TEST |
| は、パターンの論理和で、複数のパターンのいずれか |
| メイルの宛先やタイトル |
^(To|From|Subject |Date|Cc|Bcc|Fcc| Received|Sender): |
^ 文字列(行)の最初にマッチする。 |
This is a desk. This is a book. のisのマッチ |
最長マッチ .*is 最短マッチ .*?is 単語単位は \b.[^ ]*?is|is |
.* は何でも有りを示す。 通常は最長一致のルールが適用される。 ? で最短でマッチ。 \b 単語の境界にマッチする。 |
前後の単語を指定した検索 例: 「情報」と「検索」 |
情報.*?検索 |
.* は何でも有りを示す。 ? で最短でマッチ |
| メイルの引用部分 |
^ *\>.*$ |
^ 文字列(行)の最初にマッチする。 |
閉じている ダブルクォーテーション文字列 |
"("|.[^"]*") または ".*?" |
途中の^は否定 |
| 行頭が数字でない行 |
^[^0-9].* |
途中の^は否定 |
ダブルクォーテーション から行末まで |
".[^"]*$ |
$ 文字列(行)の最後にマッチする。 |
()でくくられた範囲。 3重の入れ子を含む。
右の正規表現および解説は、 サクラエディタ掲示板の「すい」さんの記述から引用させていただきました |
\([^()]* (\([^()]* (\([^()]*[^()]*\)[^()]*)* [^()]*\)[^()]*)* [^()]*\) |
↓基本パターン <[^<>]*>
これで対応する括弧だけにマッチします。 入れ子に対応するための準備として <[^<>]*[^<>]*> と変更します。(まだ入れ子非対応。)
で、↑上記の [^<>]* と [^<>]* の間に (<[^<>]*[^<>]*>[^<>]*)* という、「( 対応する括弧の組み合わせ+括弧とは無関係な 0字以上の文字列 )が 0回以上繰り返される」 の記述を挿入。↓
<[^<>]*(<[^<>]*[^<>]*>[^<>]*)*[^<>]*>
↑これで2重の括弧に対応。
さらに↑上記の [^<>]* と [^<>]* の間に (<[^<>]*[^<>]*>[^<>]*)* という、「( 対応する括弧の組み合わせ+括弧とは無関係な 0字以上の文字列 )が 0回以上繰り返される」の記述を挿入。↓
<[^<>]*(<[^<>]*(<[^<>]*[^<>]*>[^<>]*)*[^<>]*>[^<>]*)*[^<>]*>
↑これで3重の括弧に対応。 |
10182 11128 20080 30020 90180 で80で終わらない行 |
^.*([^8].|[^0])$ |
^ 文字列(行)の最初にマッチする。 $ 文字列(行)の最後にマッチする。 |
| htmlのタグ |
<(.*?)> |
* は、直前文字の0回以上の繰り返し .*は何でも有りを示す。 ? で最短でマッチ。 |
| htmlのアンカータグ |
<[Aa] [^>]*> |
|
| cssのコメント /* */ |
/\*/?([^/]|[^*]/|\n)*\*/ |
|