Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java matcher的问题_Java_Matcher - Fatal编程技术网

Java matcher的问题

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);

我必须在文本中找到单词或regexp,并为此使用
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
    (或
    “\\b”
    作为Java字符串)替换点,这是单词锚
  • 您可以指定
    模式。不区分大小写
    。但是如果要在其他字符上进行匹配,则必须向模式编译标志中添加
即:

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

最后,请注意,
[ee]
e
是等效的,您可能在这里指的是其他内容。

有两个问题:

  • 在匹配前后指定一个点;因此,它要求每个单词周围有一个字符;尝试用
    \b
    (或
    “\\b”
    作为Java字符串)替换点,这是单词锚
  • 您可以指定
    模式。不区分大小写
    。但是如果要在其他字符上进行匹配,则必须向模式编译标志中添加
即:

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

最后,请注意,
[ee]
e
是等效的,您可能在这里指的是其他内容。

您没有提到是否设置了区域设置?如何执行此操作?你认为这很重要吗。至于我,我猜信息可能包含英语或俄语文本,或者两者都包含。是的,我错了。您不必为这个案例担心。您还没有提到是否设置了区域设置?如何设置?你认为这很重要吗。至于我,我猜信息可能包含英语或俄语文本,或者两者都包含。是的,我错了。你不必为这个案子担心。哦,我是说俄语和英语。它们可以被替换以规避安全。@NikitinMikhail security?安全性与此有什么关系?如果您对此感兴趣,此应用程序用于将垃圾邮件与非垃圾邮件分开。用户自己创建规则,自己决定哪些词将此消息描述为垃圾邮件。垃圾邮件者可以用英语e替换俄语e来绕过这个垃圾邮件过滤器,因为它们看起来相同,并且不会改变消息的含义。哦,我是说俄语和英语e。它们可以被替换以规避安全。@NikitinMikhail security?安全性与此有什么关系?如果您对此感兴趣,此应用程序用于将垃圾邮件与非垃圾邮件分开。用户自己创建规则,自己决定哪些词将此消息描述为垃圾邮件。垃圾邮件发送者可以用英语e替换俄语e以绕过此垃圾邮件过滤器,因为它们看起来相同,并且不会改变消息的含义。