私は負の先読みと後ろの否定の見方を模索してきました。しかし、彼らは私がしたいことをしていないようです。特定のキーワードとの一致を防ぐJava正規表現
「word1 word2 word3 word4」という文がありますが、を拒否してください。その文にword3またはword7があれば一致します。別の言葉では、matcher.find()
はfalse
でなければなりません。それ、どうやったら出来るの?
理想的には私は//Result: Nothing
String contents = null;
contents = "word1 word2 word3 word4";
m = Pattern.compile("(?i)(.*)").matcher(contents);
//Result: word1 word2 word3 word4
m = Pattern.compile("(?i)(?!.*(word3))(.*)").matcher(contents);
//Result: ord3 word4
m = Pattern.compile("(?i)(?!.*(word3))(\\w{4}\\d{1}\\s.*)").matcher(contents);
//Result: Nothing
m = Pattern.compile("(?i)(?<!(word3))(.*)").matcher(contents);
//Result: word1 word2 word3 word4
m = Pattern.compile("(?i)(.*)(?<!(word3))").matcher(contents);
//Result: word1 word2 word3 word4
m = Pattern.compile("(?i)(.*)(?<!(word4))").matcher(contents);
//Result: word1 word2 word3 word
私は否定的なブロックヘッドに精通していませんが、2つの一般的なアドバイス:Regexはこれに適したツールではありません。本当にregexを使用する必要がある場合は、 https://regex101.com/ –
まず、単語が文章内に存在するかどうかをチェックし、そうでない場合は、マッチャーを適用しますか? – kaetzacoatl