匹配模式和计算平等之间的区别

时间:2014-11-26 10:38:09

标签: java regex groovy

在正则表达式(Groovy)中,它被告知“==〜”运算符类似于运算符 “==”,但匹配模式而不是“计算平等” 你能用一个小例子帮我理解这两者之间的实际区别吗?

2 个答案:

答案 0 :(得分:1)

x==yx.equals(y)x.compareTo(y)的缩写 - 请参阅Groovy Operator Overloading(在java中,这基本上比较了对象标识)。

运算符==~是一个专门设计的比较运算符,可帮助您对字符串上的模式进行完全匹配。

为运算符生成的代码(例如,解扰代码'xxx' ==~ /xx?/)是:

ScriptBytecodeAdapter.matchRegex("xxx", "xx?")

来自Groovy Regular Espressions

  

由于Matcher通过调用其find方法强制转换为boolean,因此=〜运算符与Perl的=〜运算符的简单使用一致,当它显示为谓词时(在'if','while'等中)。 )。 “更严格的”==〜运算符需要整个主题字符串的精确匹配。它返回一个布尔值,而不是匹配器。

答案 1 :(得分:0)

"马铃薯" =="马铃薯"实际上是:

boolean result = ("potatoe"=="potatoe") //Compare Strings (GStrings in groovy)

"马铃薯" ==〜" potat *"的意思是:

Pattern p = Pattern.compile("potat.*");
Matcher m = p.matcher("potatoe");
boolean result = m.matches();

在第一个样本中,如果你比较" potatoe"用" potat。*"结果将是假的,因为这两个字符串不相等。第二个例子使用匹配,所以" potat。*"不再是一个简单的字符串,但正则表达式和结果都是正确的。