2012-07-08 62 views

回答

5

这实际上是在不同的上下文2名逃逸,由于这样的事实,所述参数是表示为一个串的正则表达式。

[必须转义,否则它在正则表达式中会有特殊含义。正则表达式的转义将使其成为\[。但是,\必须转义,因为它在字符串中具有特殊含义(用于转义和用数值表示字符)。

它可能会更糟糕,因为\字符用于两种情况下的转义。如果要分割\字符,则必须转义该字符(\\)以获得正则表达式的用法,但是您必须有两个\字符,这两个字符必须在字符串上下文中转义。在原始字符串要拆分的使用也需要转义如果你正在写它作为一个恒定的,所以类似的分裂会是什么样子:

"hello\\world".split("\\\\") 
1

不同版本的Groovy得到不同的结果。

对于Groovy的1.1-β-1和起,

assert "hello[world".split("\\[") == ["hello", "world"] 

断言行,但Groovy的1.0和之前给出断言错误。

assert "hello[world".split(/\[/) == ["hello", "world"] 

断言行从1.1-β-1起的所有版本中,Groovy的1.0-JSR-01〜1.0给出了一个断言错误,而Groovy的1.0-β-10和前给出了词汇错误。

"hello[world".split("\\[").each{println it} 

从1.0-β-5和β-3的Groovy的所有版本,打印

hello 
world 

但1.0-β-4打印

[.] 
[.] 
hello 
world 
相关问题