2013-12-18 89 views
2

我不是在正則表達式的東西非常好,但我想要做的是替換匹配正則表達式替換字符串沒有引號的IntelliJ

行動什麼:什麼

,其中一些是不在單引號或雙引號內。

我想用動作替換它:「某事」。

因此,它不應該取代行動:「某事」或行動:「某事」,因爲那些已經包含引號。這個東西可以是任何單詞,所以它不是靜態的。動作:作品永遠是靜態的。

回答

3

使用捕捉組來實現:

action: (\w+) 

,代之以:

action: "$1" 

看到它在行動:http://regex101.com/r/sP4pP7

action: something 
//becomes 
action: "something" 

顯然,如果你想要的東西更復雜(非單詞字符)它改變。你可以使用這樣的事情:

^action: ([.-\w]+)$ 

,這將確保該字符串開頭action:(通過^),並any word-character, period, or dash直到字符串($)結束。

+0

看來你錯過了一個逗號那裏。 – jackrabbit

+0

@jackrabbit大聲笑,沒有我鍵入',',然後寫了'逗號'... *去獲得咖啡因* – brandonscript

+0

@ r3mus真棒,這工作出色。謝謝! – cloudwalker

0

可以使用反向引用

Pattern PATT = Pattern.compile("action:(\\w+)"); 
    System.out.println(PATT.matcher("test action:word").replaceFirst("action:\"$1\"")); 
    System.out.println(PATT.matcher(" bla action:\"quoted\" bla").replaceFirst("action:\"$1\""));