目次
1.背景
正規表現(Regular Expressions)は偶に使うのでメモ。
2.正規表現
2.1.文字を表す記号
.: 任意の1文字(ワイルドカード)\w: 任意の英数字\d: 任意の数字\s: 任意の空白文字\t: タブ文字¥r, ¥n, ¥r¥n: 改行コード英語大文字:[A-Z]ひらがな:[ぁ-ん]カタカナ:[ァ-ン]半角記号:[\x21-\x7E]全角記号:[\uFF01-\uFFE6]
2.2.繰り返しの記号
- 量指定子
+: 1回以上の繰り返し*: 0回以上の繰り返し?: 0回または1回の出現{n,m}: n回以上m回以下の繰り返し
繰り返しの最短一致(控えめな一致):*?,+?,??,{n,m}?
2.3.文字クラス(Either)
- 集合演算子
[ ]: 指定された文字のいずれか1文字(Either or)[^ ]: 指定された文字以外の1文字[-]: 範囲指定
&&: 文字クラス内でAND表現(Javaのみ)
2.4.グループ(Whole)
- グループ化演算
(): 指定された文字列を結合(Whole)
|: OR条件- キャプチャグループ
- 後方参照
\1, \2...: 正規表現内で使う$1, $2...: 置換パターンで使う
- 後方参照
(?:): キャプチャグループを作らない
2.5.アンカー(Where)
^: 文字列の先頭$: 文字列の末尾¥b: 単語の境界指定先読み:(?=...)否定先読み:(?!...)肯定後読み:(?<=...)否定後読み:(?<!...)
2.6.条件
- OR条件:
- 1文字:
[abc] - 2文字以上:
(りんご|ばなな)
- 1文字:
- AND条件:
- And条件:
(?=.*りんご)(?=.*ばなな).* - 文字クラス:
[ab&&[cd]]
- And条件:
- NOT条件:
- 文字を含まない:
[^abc] - 文字列をで始まらない:
(?!xxx) - 文字列をで終わらない:
.+(?!<!xxx) - 文字列を含まない:
(?!.*xxx).*
- 文字を含まない:
2.7.数値
- 数値の桁数:
^\d{n}$ - カンマ桁区切り:
^\d{1,3}(,\d{3})*$ - 小数点含む数字:
^\d+(\.\d+)?$ - 整数:
^-?\d+$
2.8.具体例
- 日付:
^\d{4}/\d{1,2}/\d{1,2}$ - URL:
^(https?|ftp)://[^\s/$.?#].[^\s]*$ - 郵便番号:
^\d{3}-\d{4}$ - パスワード強度のチェック:
(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,} - XMLのタグ:
<([a-zA-Z]+)>(.*?)<\/\1>
2.9.フラグ
i(case insensitive): 大文字小文字区別なしg(case global):- ローカルパターン: 最初の出現だけマッチ
- グローバルパターンパターン: 全ての出現にマッチする
m(multiple lines): 複数行にマッチする
2.10.エスケープが必要な記号
\: バックスラッシュ.: ドット*: アスタリスク+: プラス?: クエスチョン{}: 波括弧[]: 角括弧(): 丸括弧^: キャレット$: ドルマーク|: パイプ
