Java matcher的问题
我必须在文本中找到单词或regexp,并为此使用Java matcher的问题,java,matcher,Java,Matcher,我必须在文本中找到单词或regexp,并为此使用java.util.regexp.Matcher 必须这样做的方法有以下几种: final ArrayList<String> regexps = config.getProperty(property); for (String regexp: regexps){ Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);
java.util.regexp.Matcher
必须这样做的方法有以下几种:
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);
}
}
替换:
Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);
与:
替换:
Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);
与:
有两个问题:
- 在匹配前后指定一个点;因此,它要求每个单词周围有一个字符;尝试用
(或\b
作为Java字符串)替换点,这是单词锚李>“\\b”
- 您可以指定
模式。不区分大小写
。但是如果要在其他字符上进行匹配,则必须向模式编译标志中添加
Pattern.compile("whatever", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
最后,请注意,
[ee]
和e
是等效的,您可能在这里指的是其他内容。有两个问题:
- 在匹配前后指定一个点;因此,它要求每个单词周围有一个字符;尝试用
(或\b
作为Java字符串)替换点,这是单词锚李>“\\b”
- 您可以指定
模式。不区分大小写
。但是如果要在其他字符上进行匹配,则必须向模式编译标志中添加
Pattern.compile("whatever", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
最后,请注意,
[ee]
和e
是等效的,您可能在这里指的是其他内容。您没有提到是否设置了区域设置?如何执行此操作?你认为这很重要吗。至于我,我猜信息可能包含英语或俄语文本,或者两者都包含。是的,我错了。您不必为这个案例担心。您还没有提到是否设置了区域设置?如何设置?你认为这很重要吗。至于我,我猜信息可能包含英语或俄语文本,或者两者都包含。是的,我错了。你不必为这个案子担心。哦,我是说俄语和英语。它们可以被替换以规避安全。@NikitinMikhail security?安全性与此有什么关系?如果您对此感兴趣,此应用程序用于将垃圾邮件与非垃圾邮件分开。用户自己创建规则,自己决定哪些词将此消息描述为垃圾邮件。垃圾邮件者可以用英语e替换俄语e来绕过这个垃圾邮件过滤器,因为它们看起来相同,并且不会改变消息的含义。哦,我是说俄语和英语e。它们可以被替换以规避安全。@NikitinMikhail security?安全性与此有什么关系?如果您对此感兴趣,此应用程序用于将垃圾邮件与非垃圾邮件分开。用户自己创建规则,自己决定哪些词将此消息描述为垃圾邮件。垃圾邮件发送者可以用英语e替换俄语e以绕过此垃圾邮件过滤器,因为它们看起来相同,并且不会改变消息的含义。