正規表現メモ

■正規表現メモ

正規表現 = 特別な意味を持つ「メタ文字」と「リテラル文字」と「文字クラス=文字集合」を使用して文字列を表現する仕組み。

メタ文字と文字クラス以外は全てリテラル文字(空白も)
? . * ^ $ + – ( ) [ ] { } | a b d D e f n r s S w W
メタ文字はそのままリテラル文字として使えないのでメタ文字をリテラルとして扱うのに○としてメタ文字をエスケープする。(はエスケープ文字)

基本ルール
0回以上の繰返しとは→存在しない又は存在すること → 省略されている可能性がある部分で使用
スペースは普通の文字扱いで特別な意味は無い → スペースと空文字は違う→空文字はNULLとも違う概念的な物
文字列でも各文字の前に空文字が付いているという概念でできている
ex) ‘KABE KIN’という1行があったとすると= 行頭空K空A空B空E空sp空K空I空N行末改行

正規表現で使える文字クラスや制御文字

メタ文字の使い方(○や△は文字列)
① . (ピリオド) : 任意の1文字→全ての文字が含まれ改行を含まない
② ○* (アスタリスク) : ○が0個以上 → Windowsの*と違い無くてもマッチする.*は単独使用できない
③ ○+ (プラス) : ○が1個以上→その文字がある場合マッチ
④ [○-△](マイナス) :○~△の範囲でマッチ→文字コードに依存するが範囲で指定できる
⑤ ○? (ハテナ) : ○が0個又は1個→その文字があっても無くてもマッチ→省略可能な物を指定したい場合に使える
⑥ ^○ (キャレット) : 行頭が○から始まる
⑦ ○$ (ダラ) : 行末が○で終わる
⑧ ○|△ (パイプ): ○又は△
⑨ [○] : []内の文字をクラス化→○の1文字にマッチ
  複数の文字を書くとOR条件になり、[]内にメタ文字を書くとリテラルとして扱われるのでは不要
⑩ [^○] :○以外にマッチ 例:[^0-9] = 数字以外 [^A-Z] = 大文字以外
⑪ ○{n} : ○がn個にマッチ
⑫ ○{n,} : ○がn個以上にマッチ
⑬ ○{n,m} : ○がn個以上m個以下でマッチ
⑭ (○) : ○をグループ化→表現の範囲を明示的に指定したい場合に適用
  ()で空文字にマッチ

[ ]はブラケット、{}はブレース、()はバーレン

マッチング例
URL http://ameblo.jp/ghs4gj/ や http://blog.ameblo.ghs4gj/ をマッチさせる
簡単には ^http://.+/$ 等
ちゃんとマッチさせるには ^http://[a-z]+.[a-z]+(.|/)[a-z0-9]+/$ 等
フォルダ C:hogehogehogehoge や C:hoge1hoge をマッチさせる
^[a-zA-Z]:(\[a-zA-z0-9″]+)+ 等

文字列 12AX7 をマッチ
^[0-9]{2}[A-Z]+[0-9]{1}  等
12..7 や ^1…7$ 等

文字列 ECL82 をマッチ
^[A-Z]{3}[0-9]{2} 等

ECL82ファミリーをマッチさせる(ECL/XCL/HCL/PCL/YCL/UCL82)
^[EXHPYU][CL]*82$ 等

HD6809又はMC6809又は6809にマッチ
(HD|MC)?6809

前方参照
(条件1) 条件番号 → 条件番号は9個までOK
(6809) 1 としておくと 6809 6809でマッチする

改行のみの行をマッチ(Windows) → ^rn

正規表現について詳しく調べる方はコチラ →正規表現の本

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。 本文に全角文字を2文字以上含めて下さい (スパム対策)