正規表現は聞いたことがあるけれど、よくわかっていないのでまとめたいと思います。
調べるとたくさんありすぎてうまくジャンル分けできているかわかりませんが、参考程度に閲覧ください。
Contents
正規表現とは
正規表現( regular expression )はパターンで文字列を表現する方法です。特定のパターン(条件)で文字を検索したりできます。
例:[0-9]{3}-[0-9]{4}
ぱっと見よくわからないけれど郵便番号は上記例で現わせるようです。
正規表現一覧
以下が書き方の基本ルールです。
正規表現の Character クラス (Regex Character classes)
文字 | 意味 |
---|---|
[XYZ] | 角括弧内の任意の1文字を表します。 [abc] であればa, b またはcとなります。 書き方例 : [abc]または[a-c] |
[^XYZ] | 角括弧内の任意の文字以外を表します。(打消し) ※ 記号の名前はキャレット「 ^ 」です。 書き方例 : [^abc]または[^a-c] |
[a-zA-Z] | a から z または A から Z (範囲)。 |
[a-d[m-p]] | a から d、または m から p (結合)。 ※[a-dm-p]と同等 |
[a-z&&[def]] | d, e, または f (交差)。 ※[def]と同等 |
[a-z&&[^bc]] | aからz、ただしbとc を除く (減算)。 |
[a-z&&[^m-p]] | aからz、ただしmからp 除く (減算)。 ※ [a-lq-z]と同等 |
正規表現の数量詞( Regex Quantifiers )
数量詞は文字の出現回数を指定できます。
文字 | 意味 |
---|---|
? | 直前の文字が0回、または1回発生する。 書き方例 : x? |
+ | 直前の文字は 1 回以上発生する。 書き方例 : x+ |
* | 直前の文字が0回以上発生する。 書き方例 : x* |
{n} | 直前の文字がちょうど n 回出現する。 書き方例 : a{2} |
{n,} | 直前の文字が n 回以上出現する。 書き方例 : a{2,} |
{n,m} | 直前の文字が n 回以上 m 回以下出現する。 ※ aが2回以上4回以下だが maaaaan の場合最初のa 4文字が当てはまる。※最長一致 書き方例 : a{2, 4} |
{n,m}? | 直前の文字が n 回以上 m 回以下出現する。 ※最短一致 書き方例 : a{2, 4}? |
\{n,m\} | 直前のブロックの n 回以上 m 回以下の繰り返しにマッチする。 書き方例:a{3,5} ※上記例は「aaa」、「aaaa」、「aaaaa」にマッチ |
正規表現のメタ文字
文字 | 意味 |
---|---|
. | 文字一文字を表す。 |
\d | 数字を表す。[0-9]の省略系。 |
\D | 数字以外を表す。[^0-9]の省略系。 |
\s | 空白を表す。[\t\n\x0B\f\r]の省略系。 |
\S | 空白以外を表す。[^\s]の省略系。 |
\w | 文字(アルファベット、アンダーバー、数字)を表す。[a-zA-Z_0-9]の省略系。 |
\W | 文字(アルファベット、アンダーバー、数字)以外を表す。 [^\w]の省略系。 |
\b | 文字の区切り。単語の境界。 書き方例 : \bword |
\B | 単語の境界以外 |
\t | タブ文字 |
\r | キャリッジリターン CR : ← |
\n | ラインフィード LF : ↓ |
\r\n | CRLF : ↵ ( ← + ↓ ) |
位置関係を表す正規表現
記号 | 意味 |
---|---|
^ | 行頭のもの 例: ^\d (先頭の数字) |
$ | 行末のもの 例: 。$ (行末の。) |
その他
. | 改行(\n、\r)を除くすべての文字 |
| | or(条件)として使われます。 例: col( o|u )r |
正規表現で使うフラグは以下を参考にしていただければと思います。
フラグと上記の正規表現の一部を使ったサンプルコードも載せています。
参考
参考サイト : 正規表現 – Wikipedia
参考サイト:正規表現パターンの記述 | mozilla
参考サイト : Java Regex | Regular Expression – javatpoint