照合方法を先に選ぶ
finditerは重ならない一致を列挙し、searchは最初の一致を探します。fullmatchは文章全体への一致が必要です。JavaScriptのgフラグはありません。
正規表現とパターン照合
パターンと文章を入力し、実際のPythonで検索・全体照合・置換を手動実行します。
入力または手動テストを待っています。
式と文章はこのブラウザー内で処理します。Pythonのファイルは初回実行時に読み込みます。
i — 大文字と小文字を無視m — ^と$を行境界に適用s — ピリオドを改行にも一致x — 空白を無視しコメントを許可a — 文字クラスをASCIIに限定Python実行環境:初回テストで読み込み
上限:式2000、文章100000、置換10000 UTF-16単位。一致10000件、出力100万単位、報告400万単位まで。実行が2秒を超えると停止します。
入力または手動テストを待っています。
注文番号と担当者名を同じログ行から取り出すとき、括弧を一つ変えただけで取得する列がずれることがあります。(?P<id>...)を小さな例で試し、一覧の値と範囲を見比べれば、アプリ側に移す前にずれを見つけられます。
Python正規表現と正規表現テスターを使い分けたいときは、finditer、search、fullmatchを比較してください。キャプチャグループの位置はUnicodeコードポイントで示し、置換にはPythonの\g<name>を使います。
Python正規表現テストでは、全体の一致と番号付き・名前付きグループを並べて確認できます。参加しなかったグループはnullと(-1, -1)、空文字を捕獲したグループは空文字として区別します。
\g<last>と\g<first>で順序を入れ替えると、re.subnの結果を別の欄で確認できます。置換回数が0なら全件が対象です。入力そのものは書き換えません。
finditerは重ならない一致を列挙し、searchは最初の一致を探します。fullmatchは文章全体への一致が必要です。JavaScriptのgフラグはありません。
i、m、s、x、aはPythonのフラグです。mは^と$の行境界を変え、sはピリオドを改行にも一致させます。初回の手動実行でPythonを読み込みます。
位置は0始まり・終端を含まないUnicodeコードポイントです。A😀BのBは2から始まります。Ctrl/Cmd + Enterでも再実行でき、編集後は古い結果を出力できません。
Python正規表現テストはPyodideをWorkerで動かし、実際のPythonバージョンを表示します。JavaScriptのRegExpをPythonとして表示しません。
group 0、番号、名前、値、範囲を一覧にします。絵文字を含む文章ではコードポイント位置をUTF-16位置へ変換し、ハイライトのずれを防ぎます。
置換プレビューはre.subnを使用します。\1と\g<name>は展開され、空のテンプレートは一致部分を削除します。$1はそのままの文字列です。
正常に終わった場合だけ、実行方法、フラグ、パターン、Pythonバージョン、全一致を含むJSONをコピーまたは保存できます。
regex101で選んだエンジンを確認してください。既定のPCRE2とPythonのreには違いがあります。Pythonの名前付きグループは(?P<name>...)です。
はい。置換を選び、\g<name>や\1を含むテンプレートを入力します。$1はグループ参照にはならず、元の文章は変更されません。
見られます。一致をハイライトし、グループの値と範囲を表示します。幅0の一致は位置マーカーで示します。
前者は短い一致から、後者は長い一致から試します。ただしどちらも実行時間の安全を保証しません。境界例で試してください。
どちらも式をまとめますが、(...)だけが番号付きの捕獲を作ります。(?:...)は番号を使わず、置換で参照できる捕獲も増やしません。
解決しませんでしたか?