概要

ある一定のパターンの文字列を探索、あるいは置換するために用いられる、パターンの表現形式。細かい実装が異なることはあるが、多くの処理系で、共通した記述規則を用いてパターンを定義できる。

  • メタ文字
  • 量指定子
  • 文字クラス
  • 略記法
  • 修飾子

参考:

正規表現 – Wikipedia

メタ文字

  • \ エスケープ文字
  • ^ 検索対象の先頭/複数行モードでは行頭
  • $ 検索対象の終端/複数行モードでは行末
  • . 任意の一文字 (改行を除く)
  • [] 文字クラス
  • | 選択肢
  • () サブパターンを定義する
  • ? 0 または 1 回の合致
  • * 0 回以上の繰り返し
  • + 1 回以上の繰り返し
  • {n} n 回の繰り返し
  • {n,m} n 回以上 m 回以下の繰り返し

参考:

ドット (.) – 任意の一文字にマッチする | JavaDrive

キャレット (^)/ドル記号 ($) – 文字列の先頭と文字列の末尾の位置にマッチする | JavaDrive

縦棒 (|) – 複数のパターンのどれかにマッチする | JavaDrive

正規表現のメタ文字一覧 | JavaDrive

メタ文字 | so-zou.jp

メタ文字 | PHP Manual [公式]

量指定子

  • ? 0 または 1 回の合致
  • * 0 回以上の繰り返し
  • + 1 回以上の繰り返し
  • {n} n 回の繰り返し
  • {n,m} n 回以上 m 回以下の繰り返し

参考:

直前の文字の繰り返し (*、+、?、{num}、{min,max}) | JavaDrive

正規表現の Greedy と Lazy | ほしかったあのスキルを手に入れよう

量指定子 | Microsoft Docs

貪欲と怠惰な量指定子 | 現代の JavaScript チュートリアル

なぜ、量指定子 + は貪欲ではないのか – teratail

Greedy & Lazy match in Regular Expression | Mehul Lakhanpal

Regex Non-greedy (or Lazy) Quantifiers | PHP Tutorial

Greedy and Lazy Quantifiers | W3docs

Greedy and Lazy Quantifiers | RIP Tutorial

What do ‘lazy’ and ‘greedy’ mean in the context of regular expressions? – Stack Overflow

How can I write a regex which matches non greedy? – Stack Overflow

Why is this regex not greedy? – Stack Overflow

文字クラス

  • [] 文字クラス

参考:

角括弧を使った文字クラスの利用 | WWW クリエイターズ

文字クラス | IBM Documentation

POSIX Bracket Expressions | Regular-Expressions.info

略記法

略記法は、環境や使用言語によって使えない場合や定義が異なる場合がある。Perl 互換あるいは GNU 互換で実装されている場合には、基本的なものは概ね共通して使用できる。

  • \d 数字 [0-9]
  • \D 数字以外 [^0-9]
  • \h 水平スペース [ \t\xa0]
  • \H 水平スペース以外
  • \s スペース [ \t\r\n\v\xa0\x85]
  • \S スペース以外
  • \v 垂直スペース [\r\n\v\x85]
  • \V 垂直スペース以外
  • \w 単語を構成する文字 [_0-9A-Za-z]
  • \W 単語を構成する文字以外 [^_0-9A-Za-z]

参考:

よく使用される文字クラスの略記 | JavaDrive

バックスラッシュ (\) + 文字を使った文字クラスの略記法 | JavaDrive

正規表現の略記法 \d と \s と \w | ものかの

正規表現の略記法 | ハウツー野郎

Generic Character Types | pcre2pattern specification (PCRE) [Official]

エスケープ

参考:

正規表現でメタ文字をエスケープして通常の文字として扱う | JavaDrive

エスケープが必要な文字一覧 | WWW クリエイターズ

修飾子/モード指定

  • i 大文字小文字を区別しない (ケースレスモード)
  • m 改行を含む複数行に対してマッチを実行する (マルチラインモード)
  • x 空白は無視されてコメントを記入できるモード (フリーフォーマットモード/コメントモード)

参考:

マッチモード | so-zou.jp

修飾子 | とほほの WWW 入門

Internal Option Setting | pcre2pattern specification (PCRE) [Official]

フリーフォーマットモード

参考:

パターンの中の空白やコメントを無視する (/x 修飾子) | JavaDrive

正規表現の中にコメントを含める、/x オプションによるフリーフォーマット記法について | このすみ技術ろぐ

clean up regex – Stack Overflow

正規表現エンジン

参考:

Comparison of Regular-Expression Engines – Wikipedia

まとめ

とほほの正規表現入門 | とほほの WWW 入門

正規表現 記法まとめ | galife

正規表現入門 | JavaDrive

正規表現メモ | kbk

What does this regex mean? – Stack Overflow

オンラインツール

Regex101 – Build, Test, and Debug Regex

鬼車 (Oniguruma)

リポジトリ:

kkos/oniguruma: Regular Expression Library – GitHub

参考:

鬼車 正規表現 (RE.ja) – kkos/oniguruma – GitHub

鬼車 – Wikipedia

鬼雲 (Onigumo)

リポジトリ:

k-takata/Onigmo: Onigmo is a regular expressions library forked from Oniguruma – GitHub

参考:

鬼雲に非包含オペレータを実装した話 – Qiita

RE2

正規表現ライブラリ

リポジトリ:

google/re2: RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library – GitHub

参考:

高速かつ省メモリな Google の正規表現ライブラリ RE2 についてのメモ | naoya_t@hatenablog

記事をシェアする:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA