CATエディタ

Webエディタにおける正規表現 (TMS)

本コンテンツはPhrase Language AIの機械翻訳により、英語から翻訳されています。

ウェブエディタにおける正規表現のサポートは、Lucene Regexエンジンの実装によって制限されています。

正規表現を使用するには、フィルタ設定で正規表現を使用して一致を有効にしてください。フィルタ入力フィールドの緑のチェックマークは、有効な正規表現の成功した検証を示します。

クエリはデフォルトで大文字と小文字を区別しません。フィルタ設定で大文字と小文字を区別して一致を有効にすると、大文字と小文字を区別するようになります。

単語を一致させる(完全な単語のみを一致させ、長い単語内の部分文字列を一致させないことを保証する)は利用できません。

クエリ^abc$は期待通りに動作し、すなわち全体のセグメントと一致しますが、abcは任意のテキスト内の部分文字列abcと一致します。

制限事項

部分的にフォーマットされたクエリの正しい置換はサポートされていません。例えば、テキスト"\{b\>名<}: Bob, \{biu\>姓\<biu\}: Dylan."で"Jméno: $1, Příjmení: $2."を検索すると、"{>Jméno: Bob, Příjmení: Dylan\<b\}"として置換されます。

サポートされていないパターン

  • 単語境界アンカー\bは、正確な単語を一致させるために使用されます(デスクトップエディタで動作します)。

  • \\[1-9] - 後方参照(\1、\2など)、例えば(\w+)\s+\1は「hello hello」のような重複した単語と一致します。

  • \(\?=|\(\?!|\(\?&lt;=|\(\?&lt;! - 先読みと後読み、例えばcat(?=\.jpg)は「cat.jpg」の中の「cat」のみと一致します。

  • \(\?: - 非捕捉グループ、例えば(?:Mr|Mrs|Ms)\. \w+,ですが、捕捉グループ(Mr|Mrs|Ms)\. \w+はサポートされており、「Mrs. Smith」、「Mr. Brown」のような名前と一致します。

  • \(\?# - インラインコメント、例えば\d{4}-(?# year)\d{2}-(?# month)\d{2}(?# day)は「2025-06-25」と一致します。

  • \(\?P<[^>]+> - 名前付きキャプチャグループ、例えば(?P<amount>\d+)\s?(?P<currency>USD|EUR)は「150 USD」と「99 EUR」と一致します。

使用例

基本的なパターンマッチング

任意の単一文字のプレースホルダーとしてのドット (.)

  • c.at: 一致: “チャット”, “コート”。一致しない: “キャット”, “チート”

  • wa.ter: 一致: “ウェイター”, “ウェイスタ” 。一致しない: “ウォーター”

  • s.ip: 一致: “スキップ”, “シップ”, “スリップ”。一致しない: “sip”, “strip”

量詞

? - ゼロまたは1回の出現

  • colou?r: 一致: “カラー”, “カラ―”

  • g?rain: 一致: “グレイン”, “レイン”

  • books?: 一致: “本”, “本”

.* - 任意の数の文字(なしを含む)

  • h.*y: 一致: “ハッピー”, “ヒストリー”, “ハニー”

  • sa.*d: 一致: “悲しい”, “砂”, “満足”

  • m.*ing: 一致: “朝”, “会議”, “マーケティング”

.+ - 少なくとも1文字が表示される必要があります

  • pa.+er: 一致: “紙”, “画家”

  • a.+ed: 一致: “尋ねた”, “受け入れた”, “許可された”

* - ゼロまたはそれ以上の出現

  • go*al: 一致: “ゴール”, “ゴーーーーール”

+ - 1回以上の出現

  • no+: 一致する: “no”, “noooooo”

  • $1+: 一致する: “$1”, “$11”, “$111”

できるだけ具体的なパターンを使用することをお勧めします。オープンパターンはエディタでパフォーマンスの問題を引き起こす可能性があります。

重要

エディタには、正規表現パターンの複雑さに関する組み込みの制限があります。あまりにも広すぎるパターンやワイルドカードを多く使用するパターンは、無効な正規表現として失敗する可能性があります。これを避けるために:

  • パターンは短く具体的に保ってください。error-[0-9]{3} は問題ありませんが; .*a.*b.*c.*d.* は問題です。

  • ワイルドカードを最小限に抑えてください。各 .+ または .* は内部の複雑さを増加させます。可能な限り [A-Z]+ のような文字クラスを .* よりも好んで使用してください。

  • 繰り返しを伴う長い選択肢を避けてください。(word1|word2|...|word20){2,} のようなパターンはすぐに制限を超える可能性があります。選択肢に複数の単語や句読点が含まれる場合、これは正規表現の複雑さを増加させます。

  • 可能な場合は片側をアンカーしてください。^prefix.*.*middle.* よりもはるかに安価です。

パターンが拒否された場合は、よりターゲットを絞ったものにしてみてください: より長い固定プレフィックスから始めて、そこから絞り込んでください。選択肢の数を減らすか、すべてを1つの複雑な正規表現にまとめるのではなく、別々のパターンで処理することを検討してください。

例:

メールアドレスのフィルタリング:

  • このパターンは、スペースと周囲の単語を一致させ、結果が多すぎる可能性があります: .*@.*

  • 結果をすべてのメールアドレスに制限するには: [\w.+\-]+@[\w.+\-]+

  • 結果を.comのメールのみ制限するには: [\w.+\-]+@[\w.+\-]\.com

  • 結果をメールアドレスに数字が含まれているものに制限するには: [\w.+\-]*\d+[\w.+\-]*@[\w.\-]+

選択肢 (OR演算子)

  • cat|dog: 一致: “cat” と “dog”

  • red|blue|green: 一致: “red”, “blue”, “green”

文字クラスと範囲

  • [A-Z]+: 1つ以上の大文字の連続に一致します (シーケンス)。

  • [A-Z]{2,}: 大文字の任意の系列に一致します (略語や大文字で書かれた文字列に一致するのに便利)

  • [0-9]{4}: 4桁の数字に一致します。例:"1999", "2003", "1876" (4桁以上の文字列内にも見つかる; 結果を制限するには、将来計画されているMatch wordsオプションを使用する必要があります)

  • [A-Za-z0-9]+: 任意の英数字の文字列に一致します (hello! → helloは一致しますが、!は[A-Za-z0-9]の一部ではありません; 100% → 100のみが一致します)

  • ([A-Za-z]+\d+|\d+[A-Za-z]+): 数字と文字の組み合わせに厳密に一致します。例: “user123”, “Admin99”, “Win11”, “5g”, “1080p”

  • [0-9]{2,4}-[A-Z]{2,3}: ナンバープレートに一致します。例:“12-XY”, “9999-ABC”

予約文字のエスケープ . ? * { } [ ] ( ) " \

  • \+[0-9]{1,2}: 一致 “+40”, “+1”

  • \{version: [0-9]+\}: 一致 “{version: 12}”, “{version: 13}”

  • C:\\[A-Za-z]+: Matches “C:\Users”, C:\Documents, “C:\Desktop”

大文字と小文字を区別しないフィルタリングと大文字と小文字を区別するフィルタリング

  • デフォルトでは、正規表現フィルタリングは大文字と小文字を区別しないように実装されます。c.at: 一致するもの: “chat”, “Chat”, “CHAT” および “coat”, “Coat”, “COAT”

  • 正規表現フィルタリングは 大文字と小文字を区別する UIフィルタと組み合わせることができます

キャプチャグループ

正規表現のキャプチャグループは認識され、完全なクエリがハイライトされます。例えば、s(e)g は "seg" をハイライトします。キャプチャグループは置換に使用できます。例えば、「名前: Bob」は 名前: (.*?) で検索され、Jméno: $1 を使用して置換されます。欠落したバックリファレンスは優雅に処理されます。つまり、クエリ 名前: (.*?) と置換 Jméno: $1, タイトル: $2Jméノ: Bob, タイトル: $2 として置換されます。

バックリファレンスの置換の例:

  • フィルタ (\d+),(\d+) と置換 $1.$2 を使用して小数点区切りを正規化します(例: 5,6 または 35,949 から 5.6 または 35.949 へ)

  • フィルタ (\d+)\.(\d+) と置換 $1,$2 を使用して小数点区切りを正規化します(例: 5.6 または 35.949 から 5,6 または 35,949 へ)

  • フィルタ (\d{4})-(\d{2})-(\d{2}) と置換 $3/$2/$1 を使用して日付を再フォーマットします(例: 2025-06-05 から 05/06/2025 へ)

  • フィルタ ID-(\d{3,}) と置換 チケット #$1 を使用してチケットの番号を抽出します(例: ID-45321 から チケット #45321 へ)

  • フィルタ (cat|dog) と置換 $1-$1 を使用して一致したテキストを複製します(例: cat から cat-cat へ、dog から dog-dog へ)

  • オプショナルグループ: フィルタ こんにちは(, (\w+))? と置換 こんにちは $1 を使用して、名前の前や単独での「こんにちは」を置換して挨拶を変換します(例: こんにちは、ジョン から こんにちはジョン へ、こんにちは から こんにちは へ)

この記事は役に立ちましたか?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.