首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy matcher.matches似乎不适用于有效的正则表达式。

Groovy matcher.matches似乎不适用于有效的正则表达式。
EN

Stack Overflow用户
提问于 2016-05-10 20:13:52
回答 2查看 1.7K关注 0票数 1

我在前面提出了一个类似的问题,但我没有使用Groovy/Java8regex/regex/matcher API的不同部分。

Groovy 2.4在这里:

代码语言:javascript
复制
class TestPatterns {
    static void main(String[] args) {
        Matcher matcher
        String illNameChars = /[`\/;\[\]&<>?:\()|-]+/
        String input = "Bupo`dupo"
//        String input = "Bupo/dupo"
//        String input = "Bupo;dupo"
//        String input = "Bupo[dupo"
//        String input = "Bupo]dupo"
//        String input = "Bupo&dupo"
//        String input = "Bupo<dupo"
//        String input = "Bupo>dupo"
//        String input = "Bupo?dupo"
//        String input = "Bupo:dupo"
//        String input = "Bupo\\dupo"
//        String input = "Bupo(dupo"
//        String input = "Bupo)dupo"
//        String input = "Bupo|dupo"
//        String input = "Bupo-dupo"
        if(input) {
            matcher = input =~ illNameChars
            if(matcher.matches()) {
                println "Illegal character detected!"
            } else {
                println "The input is perfectly legal."
            }
        }
    }
}

为什么要打印“输入是完全合法的”?input字符串显然有一个反勾号,这是在regex中定义的。我是不是不正确地使用matcher.matches()

最后,我希望下列字符被视为“非法”:

`/;[]&<>?:()\x{e76f}

但是上面的代码对于所有的input排列似乎都失败了,不管我“切换”了哪一个(而不是注释掉)。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-10 21:51:07

在使用Matcher.matches()时,整个输入必须“匹配”正则表达式,因此必须将正则表达式更改为/.*[`\/;\[\]&<>?:\()|-].*/

或者,要用=~创建Matcher对象,然后使用它的方法,也可以简单地使用==~ matches操作符。(if (input ==~ illNameChars) ...)。

或者,您也可以在用if (matcher) ...创建它之后执行=~

最后一种选择是保持正则表达式的原样,但是使用if (matcher.find()) ...代替,因为find()检查正则表达式是否匹配输入字符串的任何子字符串。

票数 3
EN

Stack Overflow用户

发布于 2016-05-10 20:25:21

与Java一样,.matches()方法仅在整个输入字符串与regex匹配时才返回True

由于您已经使用=~运算符来创建matcher对象,所以只需测试if matcher (如在医生里所示)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37148100

复制
相关文章

相似问题

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