0

テキスト内の単語または正規表現を見つけて使用する必要がありますjava.util.regexp.Matcher for this

それをしなければならない方法は、次のとおりです。

final ArrayList<String> regexps = config.getProperty(property);
for (String regexp: regexps){
     Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);
     Matcher mt = pt.matcher(plainText);            
         if (mt.find()){
            result = result + "DENIED. reason: " + property;
            reason = false;
            LOG.info("reason " + mt.group() + regexp);
            }
 }

しかし、このコードは何らかの理由в[ыy][шs]лит[еe]でテキスト内の正規表現を見つけることができません

Вышлите пожалуйста новый счет на оплату на asda, пока согласовывали, уже
прошли его сроки. Лицензионный догово
4

2 に答える 2

2

2 つの問題があります。

  • 一致の前後にドットを指定します。その結果、各単語を 1 文字で囲む必要があります。ドットを単語アンカーである\b(またはJava 文字列として)置き換えてみてください。"\\b"
  • あなたが指定しますPattern.CASE_INSENSITIVE。ただし、このフラグは ASCII に対してのみ機能します。他の文字とのマッチングが必要な場合はPattern.UNICODE_CASE、パターン コンパイル フラグに追加する必要があります。

あれは:

Pattern.compile("whatever", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

最後の注意として、[ee]そしてe同等ですが、おそらくここで何か別のことを意味していました。

于 2013-07-03T10:21:58.393 に答える
2

交換:

Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);

と:

Pattern pt = Pattern.compile(".*" + regexp + ".*", Pattern.CASE_INSENSITIVE);
于 2013-07-03T10:18:23.113 に答える