首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matcher的问题

matcher的问题
EN

Stack Overflow用户
提问于 2013-07-03 18:16:53
回答 2查看 105关注 0票数 0

我必须在文本中找到单词或正则表达式并使用java.util.regexp.Matcher for this

我必须做的方法有以下几点:

代码语言:javascript
复制
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]

代码语言:javascript
复制
Вышлите пожалуйста новый счет на оплату на asda, пока согласовывали, уже
прошли его сроки. Лицензионный догово
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 18:21:58

有两个问题:

  • 在匹配前后指定一个点;因此,每个单词周围都需要一个字符;尝试用\b (或"\\b"作为Java字符串)替换您的点,这是单词锚;
  • 您指定Pattern.CASE_INSENSITIVE。但是this flag only works for ASCII。如果希望匹配其他字符,则必须将Pattern.UNICODE_CASE添加到模式编译标志。

这就是:

代码语言:javascript
复制
Pattern.compile("whatever", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

最后要注意的是,[ee]e是等价的,您在这里可能指的是其他东西。

票数 2
EN

Stack Overflow用户

发布于 2013-07-03 18:18:23

替换:

代码语言:javascript
复制
Pattern pt = Pattern.compile("." + regexp + ".", Pattern.CASE_INSENSITIVE);

通过以下方式:

代码语言:javascript
复制
Pattern pt = Pattern.compile(".*" + regexp + ".*", Pattern.CASE_INSENSITIVE);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17445352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档