Regular Expression

ECMAScript Version

ASTER に実装された REGEX Syntax は ECMAScript (JavaScript) 版です。

正規表現について
REGEX

ECMAScript は ECMA という団体によって定義された標準仕様の JavaScript のこと。異なるブラウザ上で共通して動かすため言語仕様を標準化し動作互換性を保つ仕組みを提供しています。

正規表現の文法は亜種が複数あり、現代では ECMAScript 版の文法で教えるウェブ上のテキストも多く、ECMAScript Regular Expression Grammars で正規表現を覚える機会が多いようです。

アメリカの数学者スティーヴン・コール・クリーネ ( Stephen Cole Kleene ) が 1943 年に考案した表記法に基づいており、後にケン・トンプソン ( Kenneth Lane Thompson ) によって Ken’s CTSS QED というメインフレーム・コンピュータ用のエディタにコンピュータ史上初の「正規表現」が搭載されました。

正規表現は UNIX 上で発展を遂げた後、現代ではあらゆるコンピュータで大量の文字列を扱う際の必須技術となっています。


regex101.com

正規表現は一定のトライ&エラーが必要になるため、ブラウザ上で動作確認できる有益なツールとして regex101.com をお勧めします。

SAVE & SHARE という機能があり、ショート URL で結果を共有できる仕組みなどを提供。

その他 Match Infomation では検索結果を一覧表示、キャプチャグループを利用した際に得られたサブマッチがビジュアルで確認できるなど、デバッグやテストを効率化できます。




ASTER で利用できる正規表現機能

  • 部分一致検索 (Search :: Partial Match)
  • 完全一致検索 (Search :: Exact Match)
  • 置換 (Search and Replace if matched)

文字列の検索と置換に正規表現を利用可能になります。基本的な構文は以下の通りです。

Pattern Japanese English
x|y 代替演算子(オルタネーション演算子) The alternation operator
[xyz] 文字クラス Character class
[^xyz] 文字集合の否定 Negated character class
\1 後方参照 Backreference
(x) キャプチャグループ Capturing Groups
{n} 固定量指定子 Fixed quantifier
{n,m} 貪欲量指定子 Greedy quantifier
(?:x) 非キャプチャグループ Non-Capturing Groups
(?=x) 肯定的先読み Positive lookahead
(?!x) 否定的先読み Negative lookahead

Control Characters

CF25の仕様上、制御文字列の送信は限定的な対応に留まります。置換処理に含まれる制御文字には未対応のものがあります。

Pattern Matching Search

パターンマッチング検索なので通常の文字列検索よりも処理は重くなります。

Specification

C++20 STL は ECMASCript REGEX の全機能をサポートしておらず、後方検索 (Lookbehinds) が利用できません。Named capturing group も未対応。

(?<=T.+e)S.+t

上記は構文的には正常ですが ASTER 上では後方参照が利用できないため Syntax Error となります。

この正規表現は、T で始まり e で終わる文字列の後に続く S で始まり t で終わる任意の文字列にマッチします。

regex101 で動作確認した例



関連