← 資料室 RESOURCE
同じ正規表現でも言語ごとに文法とサポートが少しずつ異なります。

正規表現の核心概念は共通ですが、細かな文法(フレーバー)は言語ごとに異なります。このツールはブラウザのJavaScript(ECMAScript)エンジンを使用するため、別の環境にパターンを移すときは違いを知っておく必要があります。

名前付きグループはJavaScriptとPython・PCREのいずれもサポートしますが、文法が異なります。JavaScript・PCREは (?<name>...)、Pythonは (?P<name>...) を使い、参照もそれぞれ異なります。後読みは最新のJavaScript・Python・PCREでサポートされますが、一部の古い環境にはありません。

フラグの表記も異なります。JavaScriptは /pattern/gi のようにスラッシュの後に付け、Pythonは re.IGNORECASE のような定数を引数として渡します。JavaScriptの s(dotAll)・u(unicode)フラグは、他の言語ではデフォルトの動作だったり名前が異なったりすることがあります。

ユニコードプロパティ \p{...} はJavaScriptでは u フラグがないと動作せず、PCRE・Python(regex モジュール)は少し異なる扱いをします。パターンを別の言語へ移すときは、その言語の正規表現ドキュメントでこれらの項目をまず確認してください。