我需要在机器生成的代码中解析多个if和else if条目以提取eventName值。我所关心的只是我的字符串中引号中包含的无数组合。
请考虑以下代码:
String input = "if (eventName== \"event1\") {//blahblah\n}\nelse if (eventName==\"event2\") {//blahblah\n }";
String strPattern = "eventName(?s)==.*\"(.*)\"";
Pattern pattern = Pattern.compile(strPattern,Pattern.CASE_INSENSITIVE);
Matcher match = pattern.matcher(input);
while (match.find()) {
System.out.printf("group: %s%n", match.group(1));
}
这只给了我第二个捕获的组event2。如何使用eventName ==
之间的空白和换行的所有组合来解析上述内容答案 0 :(得分:1)
你可以尝试非贪婪的方式
String strPattern = "eventName(?s)==.*?\"(.*?)\"";
或者
String strPattern = "eventName==\\s*\"([^\"]*)\"";
输出:
group: event1
group: event2
第二个正则表达式模式说明:
eventName== 'eventName=='
\s* whitespace (\n, \r, \t, \f, and " ") (0 or more times)
" '"'
( group and capture to \1:
[^"]* any character except: '"' (0 or more times)
) end of \1
" '"'