混淆了Groovy正则表达式匹配

时间:2013-10-03 09:12:59

标签: java regex groovy

做一个最近的dzone益智游戏,匹配重复数字的字符串,我对以下内容感到困惑:

我希望以下模式有效:/(\ d)\ 1 /

当我使用operator =〜(应该创建匹配器)时,这正确匹配

if(!("${num}" =~ /(\d)\1/) )
            println num

不会打印,例如77,100,222等

但是当我使用==〜(应该评估为布尔值)时,即:

if(!("${num}" ==~ /(\d)\1/) )
            println num

然后它将不会打印55,66,但它将打印100,111。我必须将模式更改为/ \ d *(\ d)\ d \ d * /以使其正常工作。

我误解了什么?为什么模式适用于=〜但不是==〜

有任何见解。

1 个答案:

答案 0 :(得分:3)

=~ creates a matcher
==~ (returns boolean, whether String matches the pattern)

// =~ creates a Matcher, and in a boolean context, it's "true" if it has at least one   
//match, "false" otherwise.
assert "cheesecheese" =~ "cheese"

// ==~ tests, if String matches the pattern
assert "2009" ==~ /\d+/  // returns TRUE

documentation