正規表現 正規表現とは、特定の文字列の並びを記号を用いてパターン化する手法です。 ■ 共通 ------------------------------------------------------- 【使用する記号】 . 改行以外の任意の1文字にマッチ \n 改行にマッチ (?:.|\n) 改行または任意の1文字にマッチ \t 水平タブ \v 垂直タブ \f フォームフィード(改ページ) \r キャリッジリターン(復帰) \d 数字[0-9]と同じ \D 数字以外[^0-9]と同じ \w 任意のアルファベットと数字にマッチ \W アルファベットや数字以外の文字にマッチ \s スペースにマッチ \S スペース以外にマッチ \0nn 8進法で表すASCII文字( ex. \033, \040 など )注:0 はゼロ \xnn 16進法で表すASCII文字 ( ex. \x00:ヌル文字 ,\x1b:ESC , \x22:ダブルクォート「"」, \x27:シングルクォート「'」 など) \uxxxx Unicode(UTF-16) xxxx によって表現される文字にマッチ。全角文字にも使用可。 必ず xxxx の部分は4桁。"\u0041" は "A" 、"\u3042" は "あ" にマッチ。 【位置の指定】 ^ 行の先頭にマッチ 例: "^あいう" − 行の先頭から"あいう"で始まる $ 行の末尾にマッチ 例: "あいう$" − 行の末尾が"あいう"で終わる 例: "^あいう$" − 行全体が"あいう"と一致 末尾が改行の場合は改行にマッチするので注意。 文字列の末尾にマッチさせるには、\Z を使用。 \< 単語の先頭部分にマッチ \> 単語の末尾部分にマッチ \b 単語と接するスペースにマッチ \B 単語と接しない(両隣もスペース)スペースにマッチ \A 文字列の最初にマッチ \Z 文字列の最後にマッチ ^$ 空行(行の先頭かつ末尾→改行のみの行) 【反復の指定】 r 正規表現rにマッチ r? 正規表現rが0回または1回現れるものにマッチ r* 正規表現rの0回以上の任意の回数繰り返すものにマッチ r+ 正規表現rが1回以上繰り返すものにマッチ r{n} 正規表現rがn回繰り返すものにマッチ r{n,} 正規表現rがn回以上繰り返すものにマッチ r{,m} 正規表現rが0回以上m回以下繰り返すものにマッチ r{n,m} 正規表現rがn回以上m回以下繰り返すものにマッチ *? 最短マッチで、0回以上の繰り返し +? 最短マッチで、1回以上の繰り返し r{n}? 正規表現rのn回の最少繰り返し ? は *、+、?、{} の後につけて最短マッチを表現 【択一文字】 [abc...] 文字abc...中の改行以外の任意の1文字にマッチ [0-9] 数字1文字 [0-9]+ 数字の繰り返し [a-z] 文字コードがaからzの範囲にある文字1文字にマッチ [0-9][0-9][0-9][0-9] 数字4文字 [a-zA-Z] 半角アルファベット ([A-Z][a-z]){2,} 大文字小文字の順で2回以上繰り返されるパターン [\s ] 半角または全角のスペース1文字にマッチ [^abc...] 文字abc...以外の改行以外の任意の1文字にマッチ [^a-z] 文字コードがaからzの範囲以外の1文字にマッチ [^0-9] 数字以外の文字 【グループ化】 ( ) グループ化する箇所。( )内の文字列がキャッチアップされる。 例:(\d{3}) ab12ef345gh → 345 3個の数字の連続 ^(\d)+ 34abcd567efg → 34 先頭から始まる数字の連続 【択一文字列】 (r1|r2) 論理和:正規表現 r1または正規表現r2にマッチ。 例:鈴木(一郎|花子) → 鈴木一郎 または 鈴木花子 にマッチ 【含まない】 (?!r) 特定の文字列が含まれない 例:^(?!.*abc).*$ → abcを含まない文字列 ^:行頭 $:行末 ・マッチする ab , abz , xyz ・不一致しない abc , abcabc , abcz ,1abc 【非キャッチアップ】 (?:r1|r2) キャッチアップしない択一文字列 例: 鈴木(?:一郎|花子) → 鈴木一郎 または 鈴木花子 にマッチするが、 一郎 または 花子 をキャッチアップしない 【その他] メタ文字 上記のように特殊な意味を持つ文字 | . + * ? ^ $ \ [ ] ( ) エスケープ メタ文字を通常の文字として扱うためには「\」記号を前に付けてエスケープ(打ち消す) \ 記号自体を文字として扱う場合も同じく、\\ とする。 \<メタ文字> とすればその文字自身にマッチ ■ 使用例 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 数字 数字の連続 1234 \d+ 4桁の数字で始まる ^[0-9][0-9][0-9][0-9] 文字 半角英字列 abcd [a-zA-Z]+ 半角・全角英字列 eBacFd [a-zA-Za-zA-Z]+ 全角文字 あいう [^\x01-\x7E]+ いずれかの文字列 (パナソニック|松下電気|ナショナル) スペース 半角または全角のスペース [\s ] 日付 日付形式の取り出し 2014/1/31 \d{4}/\d{1,2}/\d{1,2} 毎月の25日にマッチ 2014/1/25 \d{4}/\d{1,2}/25 ファイル名 URLからファイル名のみ取り出す [^/]+$ 行末から / 以外の文字列 http://xxx.com/abc.mp3 → abc.mp3 フルパスからファイル名のみ取り出す [^\\]+$ 行末から \ 以外の文字列 c:\work\abc.doc → abc.doc リンクアドレス HTMLのLINKアドレス部分だけ抽出 \x22 は「"」 → http://yahoo.co.jp 規定フォーマット 郵便番号(島根県) (69\d|68\d)-\d{4} 電話番号 \d{2,4}-\d{2,4}-\d{4} メールアドレス [\w\d_-]+@[\w\d_-]+\.[\w\d._-]+ URL http://[\w\d/%#$&?()~_.=+-]+ HTMLタグ(テーブル)