【发布时间】:2022-02-03 13:59:02
【问题描述】:
我需要从以下多行字符串中提取 VALUE1、VALUE2 和 VALUE3:
String input = "aa a\r\na aa \r\na getString(\"VALUE1\");aagetInt(\"VALUE2\");aa\r\n a getString(\"VALUE3\"); aaa\r\naaa";
我试过了:
Pattern pattern = Pattern.compile("\"(\\S+)\"+");
Matcher matcher = pattern.matcher(input);
while (matcher.find())
System.out.println(matcher.group(1));
但这会产生:
VALUE1\");aagetInt(\"VALUE2\");aa\r\n a getString(\"VALUE3
它包含第一个和最后一个引号之间的所有内容。
然后我尝试了这个:
"(.*)get(\\S+)\\(\"(\\S+)\"(.*)"
但这只需要最后一个匹配项 VALUE3(使用 matcher.group(3))。
如何获取所有 3 个值:VALUE1、VALUE2、VALUE3?
【问题讨论】:
-
使用
Pattern.compile("\"([^\"])\"")。请注意,如果允许VALUE1等的实际值包含",这将变得更加困难。 -
这能回答你的问题吗? Getting match of Group with Asterisk?