如何在多次出现正则表达式的字符之间提取字符串

时间:2016-05-04 15:06:37

标签: regex groovy

作为一个例子,我有一句话:

if (ProPref.get("kcstcli","manageesw","on").equals("on")) {

我想提取:

"kcstcli","manageesw","on"

我尝试了非贪婪的解决方案,但它不能很好地工作(我正在使用Groovy)。

it =~ /ProPref.get\((.*)?\)/

1 个答案:

答案 0 :(得分:5)

非贪婪模式为.*?(.*)?可选贪婪子模式,匹配除换行符之外的0或更多字符的1或0次出现。

使用

it =~ /ProPref\.get\((.*?)\)/

通过组1访问捕获的值。请参阅this regex demo

Groovy sample code

s = "if (ProPref.get(\"kcstcli\",\"manageesw\",\"on\").equals(\"on\")) {"
regex = /ProPref\.get\((.*?)\)/

def m = s =~ regex
(0..<m.count).each { print m[it][1] + '\n' }

结果:"kcstcli","manageesw","on"