1

Pattern.compile()テキスト文字列に他の2つの文字列が含まれているかどうかを確認するために使用しています。ただし、1つの正規表現パターンである必要があります。

たとえば、文字列には「StringOne」と「StringTwo」が含まれている必要があります。

できますPattern.compile("(StringOne StringTwo|StrinTwo StringOne")が、どちらの文字列もかなり長いので、圧縮できるかどうかを確認したいと思います。

"(StringOne )?StringTwo( StringOne)?"そうすると、「StringTwo」と「StringOneStringTwoStringOne」に一致します。

4

2 に答える 2

0

この正規表現を使用します。

^(?=.*\\bStringOne\\b)(?=.*\\bStringTwo\\b)

これは、入力の開始に固定された2つの先読みを使用して、両方の文字列がどこかに表示されることを表明します

編集:\b文字列の末尾に単語の境界を追加して、ある文字列が別の文字列内で一致しないようにしましたが、これは質問の明示された要件ではありませんでした。

于 2013-01-07T11:00:34.847 に答える
0

速度の問題があります。これを達成するために先読みを使用することもできますが、速度的にはコストがかかります。先読みは、長い文字列では非常に広範です。

文字列が長い場合、より高速なアプローチは2つの別々の一致を行うことです。

本当に必要な場合は、独自の方法を使用してくださいstring A string B|String B String A

于 2013-01-08T10:08:45.497 に答える