2013-07-31 81 views
2

正则表达式正常工作here,但是当我运行它时,我的脚本在下划线上被阻塞了。下划线不应该被忽略......这个交易是什么?为什么不是这个正则表达式工作?

只是试图抓住任何前/后$_

def someString1 = "__test" 
def someString2 = "$test" 
def someString3 = "test_" 
def someString4 = "$test_" 

//... 

    def matcher = someString1 =~ /([\$_]*)(.+?)([\$_]*)/ 

使用NetBeans作为我的IDE和正则表达式的颜色表明它认为下划线是变量。如果美元符号逃脱或不逃脱,情况也是如此。

enter image description here

回答

3

在正则表达式的快递$_是背引用整个输入字符串。尝试改变你的正则表达式为:

([_\$]*)(.+?)([_\$]*) 
+0

是的,顺序无所谓...不知道为什么我没有想到:) – ubiquibacon

2

这是因为$是一个占位符String and GString在Groovy。既然你是使用Groovy做正则表达式,你将不得不逃避什么,遵循$或我相信它可能硬代码字符串表达式..

def matcher = someString =~ /([\$\_]*)(.+?)([\$\_]*)/ 
+0

看起来像第一种方式是走的路。我其实已经尝试过这种方式,但显然我有另一个问题阻止我。第二种方式似乎根本不起作用。 – ubiquibacon

相关问题