2013年10月10日木曜日

正規表現とは

正規表現(せいきひょうげん)とは、複数の文字列を一つの文字列で表現する方法です。正規表現とも呼ばれ、別分野ではこの呼び方もされることがあります。

正規表現は特に検索に効果を発揮します。大量の文字列の中から特定の文字列を、しかもいくつか検索する際にこの正規表現を使用します。

正規表現はメタ文字という特殊文字を使用します。メタ文字は複数あり、それぞれが特殊な意味を持ちます。メタ文字には以下のようなものがあります。こちらから引用させていただきました。

検索用メタ文字

(?i)以降の英字の大文字・小文字を同一視する
(?-i)以降の英字の大文字・小文字を区別する
(~)・パターンのグループ
・置換文字列に引用する部分の指定(\1~での部分参照)
(?:~)パターンのグループ
~|~|の左右の文字列のいずれか。(~または~)
[~]~のいずれか1文字
[^~]~に含まれない1文字
.任意の1文字
*直前のパターンの0回以上繰り返し(最長一致)
+直前のパターンの1回以上繰り返し(最長一致)
?直前のパターンの0~1回繰り返し(最長一致)
*?直前のパターンの0回以上繰り返し(最短一致)
+?直前のパターンの1回以上繰り返し(最短一致)
??直前のパターンの0~1回繰り返し(最短一致)
{min,max}直前のパターンのmin回からmax回繰り返し(最長一致)
{min,}直前のパターンのmin回以上繰り返し(最長一致)
{num}直前のパターンのnum回繰り返し
{min,max}?直前のパターンのmin回からmax回繰り返し(最短一致)
{min,}?直前のパターンのmin回以上繰り返し(最短一致)
{num}?直前のパターンのnum回繰り返し
^論理行頭
$論理行末
\n改行文字
※CR+LF(制御コード 0x0d+0x0a)とLF(制御コード 0x0a)
\tタブ文字( 制御コード 0x09)
\s空白文字(半角スペース、\t、\n、\r、\f)すべて
\S空白文字(半角スペース、\t、\n、\r、\f)以外すべて
\x##16進数
※#は0~9、a~f、A~Fのいずれか
\b語の区切り位置
\B語の区切り位置以外
\dすべての半角数字
\D半角数字以外すべて
\wすべての半角英数字とアンダースコア
\W半角英数字とアンダースコア以外すべて
\l半角英小文字すべて
\L半角英小文字以外すべて(英大文字、数字、全角文字などすべて)
\u半角英大文字すべて
\U半角英大文字以外すべて(英小文字、数字、全角文字などすべて)
\直後のメタ文字をエスケープする
\aアラーム( 制御コード 0x07)
\c#対応するコントロール文字
※#はA-Zの半角英字のみ指定可
\eエスケープ( 制御コード 0x1b)
\f改ページ( 制御コード 0x0c)
\rリターン(制御コード 0x0d)
※CR+LFのCR部分にはヒットしない
\v垂直タブ( 制御コード 0x0b)
\Q~\E~部分に含まれるメタ文字をメタ文字として解釈しない(「\」でエスケープしなくてよい)
・・・(?=~)先読み肯定グループ。
後方の文字列が~だった場合の・・・にだけ一致する
・・・(?!~)先読み否定グループ。
後方の文字列が~ではない場合の・・・にだけ一致する
(?<=~)・・・後読み肯定グループ。
前方の文字列が~だった場合の・・・にだけ一致する
(?<!~)・・・後読み否定グループ。
前方の文字列が~ではない場合の・・・にだけ一致する
置換用メタ文字

\n改行文字(CR+LF)
\tタブ文字(ハードタブ)
\s半角スペース
\xXXコードXX(16進数2桁)の文字
\0見つけた文字列全体(0は半角数字のゼロ)
\N検索文字列で指定したN番目の(と)で囲まれたパターンと一致した文字列(部分文字列)を引用する。Nは1~9のいずれか。
\直後のメタ文字をエスケープする(直後の文字を正規表現の記号(メタ文字)として扱わないことを指定)
※以下は、テキストエディタ MIFESでのみ使用できるメタ文字です。
\#見つけた文字列の論理行番号を表す半角の10進文字列
\$何番目の置換文字列かを表す半角の10進文字列($は半角文字)
\$何番目の置換文字列かを表す全角の10進文字列($は全角文字)
\@等差数字列の一回出力。
初期値、公差値は等差数字列の【初期化】の設定によります。
※テキストエディタMIFES(マイフェス)とは、メガソフト社が販売しているテキストエディタの一つです。1985年にPC-9800シリーズMS-DOS用(MIFES98)として一般手に広く使用されていました。当時はOSに付属のエディタがどれも貧弱であり、非常に多くのユーザーが利用していました。
  • この記事をシェアする

  • このエントリーをはてなブックマークに追加
  • このブログの更新をチェックする

  • follow us in feedly