1

ローカリゼーションのクリーンアップのためにユーザーに提示される可能性が高いファイル内の文字列を見つけるこの正規表現をオンラインのどこかで見つけました。ただし、2 つの単語の特定のインスタンスを見つけるという新しいタスクがあり、同じ正規表現を使用できると考えました。いくつかの組み合わせを試しましたが、正規表現を正しく行うには十分ではありません。

文字列を検索するための現在の正規表現:

(?<=text=|label=|prompt=|toolTip=|title=|icon=|String=|Error=|Separator=|Symbol=)(("(?:\.|(\\\")|[^\""\n])*")|('(?:\.|(\\\')|[^\''\n])*'))

しかし、ここでは、「カタログ」または「在庫あり」という単語が引用符の間に存在するかどうかもキャプチャする必要があります。

どんな助けでも大歓迎です。

4

1 に答える 1

2

OK、これでうまくいくはずです、私は信じています:

(?<=text=|label=|prompt=|toolTip=|title=|icon=|String=|Error=|Separator=|Symbol=)((?:"(?:\.|(\\\")|[^\""\n])*\b(?:catalog|in stock)\b(?:\.|(\\\")|[^\""\n])*")|(?:'(?:\.|(\\\')|[^\''\n])*\b(?:catalog|in stock)\b(?:\.|(\\\')|[^\''\n])*'))

私がした\b(?:catalog|in stock)\bのは、見積もりセクションに追加することだけでした。たとえば、二重引用符のセクションの場合、以前は次のようになりました。

"(?:\.|(\\\")|[^\""\n])*"

つまり、二重引用符の間にある任意の数の非引用符(エスケープされていない場合)、非戻り文字。

今それはこれです:

"(?:\.|(\\\")|[^\""\n])*\b(?:catalog|in stock)\b(?:\.|(\\\")|[^\""\n])*"

これは、二重引用符、上記の任意の数の有効な文字、「カタログ」または「在庫あり」、さらに任意の数の有効な文字、および引用符です。

于 2012-08-21T21:15:17.307 に答える