在正则表达式(Groovy)中,它被告知“==〜”运算符类似于运算符 “==”,但匹配模式而不是“计算平等” 你能用一个小例子帮我理解这两者之间的实际区别吗?
答案 0 :(得分:1)
x==y
是x.equals(y)
或x.compareTo(y)
的缩写 - 请参阅Groovy Operator Overloading(在java中,这基本上比较了对象标识)。
运算符==~
是一个专门设计的比较运算符,可帮助您对字符串上的模式进行完全匹配。
为运算符生成的代码(例如,解扰代码'xxx' ==~ /xx?/
)是:
ScriptBytecodeAdapter.matchRegex("xxx", "xx?")
由于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。*"不再是一个简单的字符串,但正则表达式和结果都是正确的。