2013-07-31 84 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

相關問題