gpt4 book ai didi

Java正则表达式捕获代码中的多个组

转载 作者:行者123 更新时间:2023-12-01 12:43:11 25 4
gpt4 key购买 nike

我需要解析机器生成的代码中的多个 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== 之间可能存在的所有空格和换行符组合来解析上述内容

最佳答案

你可以尝试非贪婪的方式

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
" '"'

关于Java正则表达式捕获代码中的多个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24899788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com