3

次の文字列があります。

    String phrase = "higher than <> expected";

<>5 を超えない単語数を表します。

以下の正規表現は無限の数の一致を返しますが、5 つ以上の一致が必要ないため役に立ちません。

String regex = "(?i)higher than(.*?)expected(?-i)";
4

4 に答える 4

4

次の正規表現はあなたのために働くはずです:

(?<=higher than\s)((?:\w+\s*){1,5})(?=\s+expected)

ライブデモ: http://www.rubular.com/r/EUDywHXmGm

于 2013-06-11T01:21:11.340 に答える
1

ここでは Look behind と Look around が適していますが、代わりに非キャプチャ グループの助けを借りてこれを使用することもできます。

higher thanまた、前後に複数の先頭および末尾のスペースを考慮する必要がありますexpected

(?:higher than\s*)((?:\w+\s*){0,5})(?:\s*expected)
于 2013-06-12T05:06:36.010 に答える
0

単語が逆の順序でも発生する可能性がある場合は、反対のパターンも指定する必要があります。

\b(?:(?:higher than)\W+(?:\w+\W+){0,5}?(?:expected)|(?:expected)\W+(?:\w+\W+){0,5}?(?:higher than))\b
于 2018-10-01T00:33:17.853 に答える