我必须在文本中找到单词或正则表达式并使用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, пока согласовывали, уже
прошли его сроки. Лицензионный догово
答案 0 :(得分:2)
替换:
Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);
使用:
Pattern pt = Pattern.compile(".*" + regexp + ".*", Pattern.CASE_INSENSITIVE);
答案 1 :(得分:2)
有两个问题:
\b
(或"\\b"
作为Java字符串)替换你的点,这是单词锚; Pattern.CASE_INSENSITIVE
。但是this flag only works for ASCII。如果要匹配其他字符,必须将Pattern.UNICODE_CASE
添加到模式编译标记中。那是:
Pattern.compile("whatever", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
最后一点,[ee]
和e
是等价的,你可能在这里有其他意思。