CATエディタ

Webエディタでの正規表現 (TMS)

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

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

正規表現を使用するには、フィルタ設定で Match using regex を有効にします。フィルタ入力フィールドの緑色のチェックマークは、有効な正規表現の検証が成功したことを示します。

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

Match words(長い単語内の部分文字列ではなく、完全な単語のみを一致させる)は使用できません。

クエリ ^abc$ は期待どおりに機能します(つまり、セグメント全体に一致します)。一方、abc は任意のテキスト内の部分文字列 abc に一致します。

制限事項

部分的に書式設定されたクエリの正しい置換はサポートされていません。例えば、テキスト「First name<}: Bob, Last name: Dylan.」で「"Jméno: $1, Příjmení: $2."」を検索すると、「{>Jméno: Bob, Příjmení: Dylan」のように置換されます。

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

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

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

  • \(\?=|\(\?!|\(\?&lt;=|\(\?&lt;! - 先読みおよび後読み。例えば、「cat.jpg」内の「cat」のみを一致させるための cat(?=\.jpg) など。

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

  • \(\?# - インラインコメント。例えば、「2025-06-25」を一致させるための \d-(?# year)\d-(?# month)\d(?# day) など。

  • \(\?P<[^>]+> - 名前付きキャプチャグループ。例えば、「150 USD」や「99 EUR」を一致させるための (?P<amount>\d+)\s?(?P<currency>USD|EUR) など。

基本的なパターン一致

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

  • c.at: 一致: “chat”, “coat”。一致しません: “cat”, “cheat”

  • wa.ter: 一致: “waiter”, “waster”。一致しません: “water”

  • s.ip: 一致: “skip”, “ship”, “slip”。一致しません: “sip”, “strip”

量指定子

? - 0回または1回の出現

  • colou?r: 一致: “color”, “colour”

  • g?rain: 一致: “grain”, “rain”

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

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

  • h.*y: 一致: “happy”, “history”, “honey”

  • sa.*d: 一致: “sad”, “sand”, “satisfied”

  • m.*ing: 一致: “morning”, “meeting”, “marketing”

.+ - 少なくとも1文字が必要

  • pa.+er: 一致: “paper”, “painter”

  • a.+ed\" 一致: “asked”, “accepted”, “allowed”

* - 0回以上の出現

  • go*al: 一致: “goal”, “goooooooal”

+ - 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,}: 大文字の連続と一致します(例:頭字語や大文字で書かれた Strings の一致に便利です)

  • [0-9]\{4\}: 4桁の数字と一致します。例:"1999"、"2003"、"1876"(4桁より長い文字列内でも一致します。結果を制限するには、将来実装予定の「一致」単語オプションを使用する必要があります)

  • [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”

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

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

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

キャプチャグループ

正規表現のキャプチャグループが認識され、クエリ全体がハイライトされます。例えば s(e)g は「seg」をハイライトします。キャプチャグループは置換に使用できます。例えば「Name: Bob」は Name: (.*?) で検索し、Jméno: $1 への後方参照を使用して置換できます。存在しない後方参照は適切に処理されます。つまり、クエリ Name: (.*?) と置換 Jméno: $1, Title: $2Jméno: Bob, Title: $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,}) を使用し、置換 Ticket #$1 を使用してチケットの番号を抽出します(例: ID-45321 から Ticket #45321 へ)。

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

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

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

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.