正则表达式替换IntelliJ中引号不是的字符串

时间:2013-12-18 19:29:26

标签: regex intellij-idea

我不是很擅长正则表达式的东西,但我想做的是替换匹配的东西

行动:某事

其中某些内容不在单引号或双引号内。

我想用行动取代它:“某事”。

所以,它不应该取代动作:“某事”或动作:'某事',因为那些已经包含引号。这个东西可以是任何单词,所以它不是静态的。动作:作品永远是静态的。

2 个答案:

答案 0 :(得分:3)

使用捕获组来完成此任务:

action: (\w+)

并替换为:

action: "$1"

查看实际操作:http://regex101.com/r/sP4pP7

action: something
//becomes
action: "something"

显然,如果你想要一些更复杂的(非单词字符),它会发生变化。你可以使用这样的东西:

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

这将确保字符串以action:(通过^)和any word-character, period, or dash开头,直到字符串结尾($)。

答案 1 :(得分: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\""));