コンテンツにスキップ

regexp

正規表現

正規表現の可視化

https://regexper.com/

テストサイト

http://rubular.com/

正規表現

/パターン/フラグ

フラグ

オプション 内容
/検索文字/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