各文字に肯定的な先読みを構築する必要があります。検索語としてgooe
を有する場合には、当社の正規表現は、次のようになります。
(?i)(?=.*g)(?=.*o)(?=.*o)(?=.*e)
それは、私たちは2つのまったく同じ先読みを持っていることは明らかです。彼らは2番目のo
の位置で満足するので、1つは冗長です。最終的なパターンを作成する前に、検索用語から重複する文字を削除することができます。 (?i)
は大文字小文字の区別をしないフラグをオンに設定します。
String term = "Gooe"; // Search term
String word = "google"; // Against word `Google`
String pattern = "(?i)(?=.*" + String.join(")(?=.*", term.split("(?!^)")) + ")";
Pattern regex = Pattern.compile(pattern);
Matcher match = regex.matcher(word);
if (match.find()) {
// Matched
}
順序が重要であり、2つのo
秒間見ながら、正確にそれらの両方が存在しなければならない場合は、私たちの正規表現は次のようになりdemo here
を参照してください:
(?i).*?g.*?o.*?o.*?e
のJava:
String pattern = "(?i).*?" + String.join(".*?", term.split("(?!^)"));
1文字あたり1桁の先読み構造を作成します。 – revo
正規表現を使用してもよろしいですか? – khelwood
はい私はこの正規表現をapache nifiで使いたいので、正規表現を使いたいです。 – Krish