2

正则表达式在这里工作得很好,但是当我运行它时,我的脚本会被下划线阻塞。下划线不需要转义......有什么关系?

只是试图抓住任何前导/尾随$_

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

//...

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

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

在此处输入图像描述

4

2 回答 2

3

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

([_\$]*)(.+?)([_\$]*)
于 2013-07-31T21:02:09.250 回答
2

这是因为 $ 是groovy中的String 和 GString占位符。由于您使用 groovy 来执行正则表达式,因此您将不得不转义 $ 后面的任何内容,或者我确信它可能将表达式硬编码在字符串中。

def matcher = someString =~ /([\$\_]*)(.+?)([\$\_]*)/
于 2013-07-31T20:59:14.657 回答