作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码。我需要检查文本中是否存在某些禁用单词列表中的任何单词。但即使这个词存在于文本匹配器中也看不到它。这是代码:
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 + "message can't be processed because it doesn't satisfy the rule " + property;
reason = false;
System.out.println("reason" + mt.group() + regexp);
}
}
出了什么问题?此代码无法找到正则表达式 в[ыy][шs]лит[еe]
,即 plainText = "Вышлите пожалуйста новый счет на оплату 中的
。我还尝试了 regexp
上 Санг, пока согласовывали, ужепрошли его сроки。 Лиценз..."regexp
的另一种变体,但一切都没用
最佳答案
问题出在别处。
import java.util.regex.*;
public class HelloWorld {
public static void main(String []args) {
Pattern pt = Pattern.compile("(qwer)");
Matcher mt = pt.matcher("asdf qwer zxcv");
System.out.println(mt.find());
}
}
这打印出 true。不过,您可能想使用单词边界作为分隔符:
import java.util.regex.*;
public class HelloWorld {
public static void main(String []args) {
Pattern pt = Pattern.compile("\\bqwer\\b");
Matcher mt = pt.matcher("asdf qwer zxcv");
System.out.println(mt.find());
mt = pt.matcher("asdfqwer zxcv");
System.out.println(mt.find());
}
}
除非您需要捕获组中的关键字,否则括号是无用的。但你一开始就已经拥有了它。
关于java - 匹配器无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151607/
我是一名优秀的程序员,十分优秀!