做一个最近的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 * /以使其正常工作。
我误解了什么?为什么模式适用于=〜但不是==〜
有任何见解。
答案 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