Java正则表达式,extract第2条语句
我有这种情况,我想提取字符串表达式的语句,但我不是正则表达式的专家
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.
有人能帮我至少提取语句吗
谢谢, 努诺
# 1 楼答案
尝试一下,如果下面的正则表达式对您有效,它将匹配
statement1
和Z
作为您的示例正则表达式只需查找if语句,然后匹配第二个参数,该参数内部不包含
,
\bif\([^,]+,\s?([^,]+),[^,]+\)
demo