我有这种情况,我想提取该字符串表达式的 statement1,但我不是正则表达式方面的专家。
String expression = "blabla if(x = 6, statement1, statement2) blabla";
但 statement1 可以递归地成为另一个 if 表达式,例如:
String expression = "blablaba iF(X = 6, if(X = 3, Z, Y), Y) bablabla";
在这种情况下,我需要提取Z
,或者至少if(X = 3, Z, Y)
我是这样做的:
String IF_CONDITION_PATTERN = "[\\s|\\n|\\t]if\\s*\\((.*)\\,(.*)\\,(.*)([^)]*?)";
String formulaStr = "blablaba iF(X = 6, if(X = 3, Z, Y), Y) bablabla";
Pattern pattern = Pattern.compile(IF_CONDITION_PATTERN,
Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(formulaStr);
while (matcher.find()) {
for(int i=0; i<matcher.groupCount();i++){
System.out.println("Found " + i + ": " + matcher.group(i) + ".");
}
}
结果是:
Found 0: iF(X = 6, if(X = 3, Z, Y), Y) bablabla.
Found 1: X = 6, if(X = 3, Z.
Found 2: Y).
Found 3: Y) bablabla.
有人可以帮我至少提取 statement1 if(X = 3, Z, Y)
。
谢谢,努诺
尝试,如果低于你的作品正则表达式,它会匹配statement1
并Z
为您的示例。
正则表达式只查找 if 语句然后匹配不包含,
在里面的第二个参数
\bif\([^,]+,\s?([^,]+),[^,]+\)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句