CATエディタ

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

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

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

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

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

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

クエリ ^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など)。例えば、(\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」に一致します。

基本的なパターン一致

任意の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”

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

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

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

キャプチャグループ

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