我不是很擅长正则表达式的东西,但我想做的是替换匹配的东西
行动:某事
其中某些内容不在单引号或双引号内。
我想用行动取代它:“某事”。
所以,它不应该取代动作:“某事”或动作:'某事',因为那些已经包含引号。这个东西可以是任何单词,所以它不是静态的。动作:作品永远是静态的。
答案 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\""));