次の文字列があります。
String phrase = "higher than <> expected";
<>
5 を超えない単語数を表します。
以下の正規表現は無限の数の一致を返しますが、5 つ以上の一致が必要ないため役に立ちません。
String regex = "(?i)higher than(.*?)expected(?-i)";
次の文字列があります。
String phrase = "higher than <> expected";
<>
5 を超えない単語数を表します。
以下の正規表現は無限の数の一致を返しますが、5 つ以上の一致が必要ないため役に立ちません。
String regex = "(?i)higher than(.*?)expected(?-i)";
次の正規表現はあなたのために働くはずです:
(?<=higher than\s)((?:\w+\s*){1,5})(?=\s+expected)
ここでは Look behind と Look around が適していますが、代わりに非キャプチャ グループの助けを借りてこれを使用することもできます。
higher than
また、前後に複数の先頭および末尾のスペースを考慮する必要がありますexpected
。
(?:higher than\s*)((?:\w+\s*){0,5})(?:\s*expected)
単語が逆の順序でも発生する可能性がある場合は、反対のパターンも指定する必要があります。
\b(?:(?:higher than)\W+(?:\w+\W+){0,5}?(?:expected)|(?:expected)\W+(?:\w+\W+){0,5}?(?:higher than))\b