我的参赛作品:
String e1 = "MyString=1234 MyString=5678";
String e2 = "MyString=1234\nMyString=5678";
我在做什么:
String pattern = "MyString=(.*)";
Pattern patternObj = Pattern.compile(pattern);
Matcher matcher = patternObj.matcher(e1); //e1 or e2
if (matcher.find()) {
System.out.println("G1: " + matcher.group(1));
System.out.println("G2: " + matcher.group(2));
}
我想要的输出:
G1: 1234
G2: 5678
最佳答案
只有一组会匹配多次。您必须保持匹配并打印组 1:
int i = 0;
while (matcher.find()) {
System.out.println("G" + (++i) + ": " + matcher.group(1));
}
此外,您需要更新模式,使其与下一个 MyString
不匹配。您可以使用 \d+
或 \w+
或 [^\s]+
,具体取决于您匹配的值的类型。
关于java - 捕获初始化字符串直到结束词的值的正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39582380/