为什么这个正则表达式不起作用?

时间:2013-07-31 20:47:25

标签: regex groovy

正则表达式正常here,但是当我运行它时,我的脚本会在下划线上被阻塞。下划线不应该被转义......这是什么交易?

只是尝试抓住任何领先/尾随$_

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

//...

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

使用Netbeans作为我的IDE和正则表达式的着色表明它认为下划线是变量。如果美元符号被转义或未被转义,情况也是如此。

enter image description here

2 个答案:

答案 0 :(得分:3)

正则表达式中的express $_是整个输入字符串的反向引用。尝试将正则表达式更改为:

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

答案 1 :(得分:2)

这是因为$是groovy中的String and GString占位符。由于你使用groovy来执行正则表达式,你将不得不逃避$后面的任何东西,或者我确定它可能是硬编码字符串中的表达式..

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