正規表現チェックツール
regular expression101(PHP, JS, Python, Golang)
Regexper(正規表現の可視化)
正規表現早見表
初心者歓迎!手と目で覚える正規表現入門・その1「さまざまな形式の電話番号を検索しよう」
まとめ
-
\d
は「半角数字1文字」を表す -
{n,m}
は「直前の文字が n 文字以上、m 文字以下」であることを表す -
{n}
は「直前の文字がちょうど n 文字」であることを表す -
[AB]
は「AまたはBが1文字」であることを表す -
[a-z]
と[-az]
ではハイフンの意味が異なる - 正規表現の正確さと複雑さはトレードオフになることが多い
初心者歓迎!手と目で覚える正規表現入門・その2「微妙な違いを許容しつつ置換しよう」
まとめ
-
?
は「直前の文字が1個、または無し」を表す -
.
は「任意の1文字」を表す -
+
は「直前の文字が1個以上」を表す -
*
は「直前の文字が0個以上」を表す -
( )
はマッチする部分をキャプチャ(捕捉)する - キャプチャした部分は置換するときに
$1
や\1
で参照できる -
\w
は「英単語を構成する文字(半角英数字とアンダースコア)」を表す -
[^AB]
は「AでもなくBでもない任意の1文字」を表す - 正規表現中の特別な文字は
\
でエスケープする -
( )
はキャプチャだけでなく、グループ化にも使われる -
(ABC)?
は「文字列 ABC があり、または無し」を表す -
(?: )
はキャプチャ無しでグループ化する場合に使う -
*
と+
は「貪欲」で最長マッチを返すため、使い方を誤ると思いがけない結果が返る -
*?
や+?
にすると、最短マッチを返す - テキストエディタで重要なテキストを置換する際は、ひとつずつ確認しながら置換する
初心者歓迎!手と目で覚える正規表現入門・その3「空白文字を自由自在に操ろう」
まとめ
-
^
は行頭を表す -
$
は行末を表す -
\t
はタブ文字を表す -
\n
は改行文字を表す -
\s
は空白文字(スペース、タブ文字、改行文字等)を表す -
ABC|DEF
は「文字列ABCまたは文字列DEF」のOR条件を表す - 改行コードは環境によって異なる場合がある
-
^
は行頭の意味になったり、[^ ]
で否定の文字クラスの意味になったりする
初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」
まとめ
-
\b
は単語の境界を表す -
(?=abc)
は「abcという文字列の直前の位置」を表す(先読み) -
(?<=abc)
「abcという文字列の直後の位置」を表す(後読み) -
(?!abc)
は「abcという文字列以外の直前の位置」を表す(否定の先読み) -
(?<!abc)
「abcという文字列以外の直後の位置」を表す(否定の後読み) - キャプチャした文字列は正規表現内でも
\1
や\2
といった連番で参照できる(後方参照) -
?
や*
、+
といった量指定子は( )
の後ろに付けることもできる -
|
を使ったOR条件では、各条件内でもメタ文字が使える - 書き方によっては、とんでもなく遅い正規表現ができあがることもある
- メタ文字はバックスラッシュ(
\
)でエスケープする -
[ ]
内ではメタ文字の種類や使われる位置によって各文字の働きが異なる -
{n,}
や{,n}
はそれぞれ「直前の文字がn個以上」「n個以下」の意味になる -
\W
、\S
、\D
、\B
はそれぞれ\w
、\s
、\d
、\b
の逆の意味になる