3

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

我希望以下模式可以工作: /(\d)\1/

当我使用运算符 =~ (应该创建一个匹配器)时,这正确匹配

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

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

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

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

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

我有什么误解?为什么该模式适用于 =~ 而不是 ==~

任何见解表示赞赏。

4

1 回答 1

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

文件

于 2013-10-03T09:25:18.800 回答