[PR]

正規表現

戻る
動作環境 / バージョン / 正規表現 / 日時書式 / 文字分類 / ハッシュ DLL

正規表現: Ver. 0.00
マニュアル更新: 2002/09/30

 正規表現はテキストを検索するための表記法です。
 ここでは つぶ塩! で使われている正規表現について説明します。


選択
| 論理和  '|' 前後の正規表現いずれかと一致します。
要素
一般文字 一般文字  文字自身と一致します。
(...) グループ  (...) 内の正規表現と一致します。
. 任意の1文字  任意の1文字に一致します。
^ 行頭  行頭に一致します。
 正規表現の先頭にだけ使用できます。
$ 行末  行末に一致します。
 正規表現の末尾にだけ使用できます。
\t タブ文字  タブ文字に一致します。
\ エスケープ記号  '\' に続く1文字に一致します。
[...] 文字クラス  [...] 内の文字リストに含まれる任意の1文字に一致します。
[^...] 否定文字クラス  [^...] 内の文字リストに含まれない任意の1文字に一致します。
量指定子
*
*?
0 回以上の並び  直前要素 0 回以上の並びを意味します。
 "*" は 最長一致、"*?" は最短一致です。
+
+?
1 回以上の並び  直前要素 1 回以上の並びを意味します。
 "+" は 最長一致、"+?" は最短一致です。
?
??
0 回か 1 回の並び  直前要素 0 回か 1 回の並びを意味します。
 "?" は 最長一致、"??" は最短一致です。
{n}
{n}?
丁度 n 回の並び  直前要素 n 回の並びを意味します。
 "{n}" は 最長一致、"{n}?" は最短一致です。
{n,m}
{n,m}?
n 回以上 m 回以下の並び  直前要素 n 回以上 m 回以下の並びを意味します。
 "{n,m}" は 最長一致、"{n,m}?" は最短一致です。

正規表現

 正規表現が一致するには、正規表現の一部ではなく正規表現全体が一致する必要があります。
 正規表現は、一つの項であるか、論理和演算子 | によって区切られた一つの項と一つの正規表現との選択です。

選択

 論理和演算子 | を用いて、選択肢の並びを指定することができます。
 例えば、正規表現 "右|左|オラオラ" は、3つの選択肢 "右", "左", "オラオラ" の並びです。
 この正規表現 "右|左|オラオラ" は、対象文字列中の部分文字列 "右", "左", "オラオラ" のいずれにも一致します。
 正規表現中で特殊文字 | 自身に一致させるには、エスケープ記号 \ を用いて \| とします。

要素

一般文字

 一般文字(空白 ' ' を含む)は、その文字自身と同じ文字に一致します。
 文字の並びは、その文字の並びと同じ文字の並びに一致します。
 例えば、正規表現 "市村 貴理" は検索対象文字列中の部分文字列 "市村 貴理" に一致しますが部分文字列 "市村貴理" には一致しません。

特殊文字

 特殊文字 . は、任意の1文字に一致します。
 例えば、正規表現 readme.txt は部分文字列 readme.txt だけではなく、readme/txt や readme1txt などにも一致します。
 部分文字列 readme.txt にだけ一致させるには、エスケープ記号 \ を用いて readme\.txt とします。

 位置指定特殊文字 ^ は、行頭に一致します。
 位置指定特殊文字 $ は、行末に一致します。
 例えば、正規表現 ^$ は、行頭に行末が続く部分文字列(すなわち空行)に一致します。
 特殊文字 ^, $ 自身に一致させるには、エスケープ記号 \ を用いて \^, \$ とします。

 エスケープ記号 \ に続けて半角英字 a-z, A-Z のいずれかを後置した場合、それは拡張表記となります。
 現在定義されている拡張表記は \t だけです。
 拡張表記 \t は1つのタブ文字に一致します。
 未定義の拡張表記を使用した場合の動作は未定義です。

 エスケープ記号 \ に続けて半角英数字 0-9, a-z, A-Z 以外の 半角区切り文字 !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~ のいずれかを後置した場合、 それはエスケープ記号に続く文字自身に一致します。
 例えば、\(, \{, \[, \*, \+, \? らは、それぞれ文字 (, {, [, *, +, ? に一致します。
 特殊文字 \ 自身に一致させるには、エスケープ記号 \ を用いて \\ とします。

文字クラス

 文字クラス [] は、[ と ] とで囲まれた文字リストに含まれる任意の1文字に一致します。
 否定文字クラス [^] は、[^ と ] とで囲まれた文字リストに含まれない任意の1文字に一致します。

 文字リスト中のハイフン - は範囲指定を意味します。
 例えば範囲指定 a-z は、a から z までの全ての文字を意味します。
 文字リストの要素として文字 -, ], ^, \ を指定したい場合は \-, \], \^, \\ と書きます。
 例えば、文字クラス [0\-9] は文字 '0','9', '-' の3文字からなる文字クラスであり、 '0' から '9' までの10文字からなる文字クラス [0-9] とは異なります。

 文字リスト中の |, (, ), *, +, ?, . は、文字リストの要素 |, (, ), *, +, ?, . として解釈されます。
 例えば、文字クラス [a.b+|c{2,3}] は、文字クラス [23abc.,+|{}] と等価です。

量指定子

 量指定子は、直前要素の並びの長さを指定します。

 * は、直前要素 0 回以上の並びを意味します。量指定子 * は、{0,} と等価です。
 + は、直前要素 1 回以上の並びを意味します。量指定子 + は、{1,} と等価です。
 ? は、直前要素 0 回か 1 回の並びを意味します。量指定子 ? は、{0,1} と等価です。
 {n} は、直前要素 n 回の並びを意味します。
 {n,m} は、直前要素 n 回以上 m 回以下の並びを意味します。

 量指定子 *, +, ?, {n}, {n,m} は、最長一致の量指定子です。
 量指定子 *?, +?, ??, {n}?, {n,m}? は、最短一致の量指定子です。

最長一致/最短一致

 最長一致の量指定子付き要素は、残りの正規表現が一致する限り最も長い部分文字列に一致しようとします。
 最短一致の量指定子付き要素は、残りの正規表現が一致する限り最も短い部分文字列に一致しようとします。


更新履歴

・Ver. 0.00
 Deluxe Next Notepad 0.10
 listup files 0.02


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
IDGは全世界85カ国でIT関連雑誌を発行する出版社です。