documentation提到了三个正则表达式特定的运算符:

  • 返回~Pattern
  • =~重现Matcher
  • ==~返回boolean

  • 现在,我该如何否定最后一个? (我同意其他人不能有任何有意义的否定。)

    我尝试了显而易见的想法:

    println 'ab' ==~ /^a.*/ // true: yay, matches, let's change the input
    println 'bb' ==~ /^a.*/ // false: of course it doesn't match, let's negate the operator
    println 'bb' !=~ /^a.*/ // true: yay, doesn't match, let change the input again
    println 'ab' !=~ /^a.*/ // true: ... ???
    

    我猜最后两个应该这样解释:
    println 'abc' != ~/^b.*/
    

    在这里我可以看到new String("abc") != new Pattern("^b.*")true

    最佳答案

    AFAIK,在Groovy中没有否定的正则表达式匹配运算符。

    因此,正如cfrick已经提到的那样,最好的答案似乎是否定整个表达式:

    println !('bb' ==~ /^a.*/)
    

    另一个解决方案是将正则表达式反转,但在我看来,它的可读性较差:

    How can I invert a regular expression in JavaScript?

    关于regex - 如何否定Groovy Match运算符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30081919/

    10-13 02:30