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

Pio*_*otr 1 regex groovy

举个例子,我有一句话:

if (ProPref.get("kcstcli","manageesw","on").equals("on")) {
Run Code Online (Sandbox Code Playgroud)

我想提取:

"kcstcli","manageesw","on"
Run Code Online (Sandbox Code Playgroud)

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

it =~ /ProPref.get\((.*)?\)/
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

非贪婪模式是.*?,所述(.*)?是一个可选的贪婪子模式匹配的1只或0的出现比其他换行符0或多个字符.

使用

it =~ /ProPref\.get\((.*?)\)/
Run Code Online (Sandbox Code Playgroud)

通过组1访问捕获的值.请参阅此正则表达式演示

Groovy示例代码:

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' }
Run Code Online (Sandbox Code Playgroud)

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