regexp
正規表現
正規表現の可視化
テストサイト
正規表現
/パターン/フラグ
フラグ
オプション | 内容 |
---|---|
/検索文字/i | 大文字・小文字を区別しない |
/検索文字/g | 先頭から末尾まで対象とする(これを指定しない場合、最初の1回だけが対象。) |
/検索文字/u | パターンと対象文字列を UTF-8 として処理 |
/検索文字/s | パターンと対象文字列を Shift_JIS として処理 |
/検索文字/e | パターンと対象文字列を EUC-JP として処理 |
/検索文字/x | パターンの中の空白やコメントを無視する |
パターン
パターン | 内容 |
---|---|
^ | 先頭(Start of line) |
$ | 末尾(End of line) |
. | 改行以外の任意の1文字 |
\A | 先頭(Start of string) JavaScript には無い |
\z | 末尾(End of string) JavaScript には無い |
\Z | 末尾(End of string)末尾が改行なら、その手前 |
\b | 単語の境界にマッチ |
\B | \b の逆。単語の境界でない所にマッチ |
\d | 0から9までの半角数字にマッチ |
\D | \d の逆。半角数字以外の文字にマッチ |
\n | Line Feedにマッチ。(Linux、Mac OS X以降) |
\r | Carriage Returnにマッチ。(Win:\r\n) |
\s | 空白文字 |
\S | \s の逆。空白文字以外 |
\t | タブ |
\w | a-z、A-Z、0-9、_ のどれかにマッチ |
\W | \w の逆。 |
\r\n | 改行(windows) |
\r | 改行(v9までのmacOS) |
\n | 改行(unix、v10以降のmacOS) |
\r\n | \r |
\ | エスケープ(例:「\/」で「/」を表現) |
文字クラス
パターン | 内容 |
---|---|
[abc] | abcのどれか1文字 |
[a-z] | a~zのどれか1文字 |
[^xyz] | xyz以外のどれか1文字 |
bat cat hat eat
→ [bch]at
→ [a-z]at
→ [^bc]at
「^」は、「[」の直後に記述した時のみ、特殊な意味を持つ。
それ以外では、単なるリテラル。
『 ^ - ] \ 』
これらは、場合によってはエスケープが不要。
( 『 ^ - 』 は、特定の位置に無い時はリテラルと解釈されるので、場合によってはエスケープ不要。)
量指定子
パターン | 内容 |
---|---|
* | 直前の文字が0回以上繰り返し |
+ | 直前の文字が1回以上繰り返し |
? | 直前の文字が0回 or 1回の繰り返し |
{n} | n回繰り返し(例:a{3}) |
{n,} | n回以上繰り返し |
{n,m} | n回以上 m回以下の繰り返し |
"apple", "banana", "pinapple"
→ ".+?"
※ここでの「?」は、短い文字でマッチするパターンを探す、という意味。
(デフォルトでは、なるべく長い文字にマッチするパターンを探す。)
量指定子の後ろの「?」は、↑と意味が異なる。
選択子
|
example.com
example.net
→ example.(com|net)
例
例 | 内容 |
---|---|
A[^A-Z0-9]CCC | Aで始り、2番目は半角アルファベット以外の文字で、最後はCCC |
/<\/?[^>]+>/g | 『 <何か> 』 or 『 』 |
/^[\d-()+]{1,}$/ | 「0~9」「-」 「()」 「+」 の入力のみを許可 |
/^[!-~]+$/ | スペースを除く半角文字全て |
/^[ -~]+$/ | スペースを含めた半角文字全て |
ASCII
http://www-creators.com/archives/4304
キャプチャ
【 置換 】
dotinstall, https://dotinstall.com
google, https://google.com
example, https://example.com
(.+), \s?(.+)
<a href="$2">$1</a>
⇒ <a href="https://dotinstall.com ">dotinstall</a>
<a href="https://google.com ">google</a>
<a href="https://example.com ">example</a>
後方参照
3, 8, 5, 4, 4, 5, 4, 1, 1, 5, 3, 3
(\d),\s\1
※最初の()でキャプチャした内容は、「1」で取り出せる。
⇒ 4, 4
1, 1
3, 3
PHP記述例
$str = preg_replace('#^[ ]+#u', '', $str);
$str = preg_replace('#[ ]+$#u', '', $str);
// # ・・・デリミタとして使用できる。「/」と同義。
// u ・・・utf8 で処理。
<参考サイト>
http://kyu-mu.net/coffeescript/regexp/#flags
https://msdn.microsoft.com/ja-jp/library/cc392020.aspx