java - 捕获初始化字符串直到结束词的值的正则表达式是什么?

标签 java regex

我的参赛作品:

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/

相关文章:

javascript - 对于正则表达式专家,按 -> 拆分并避免括号/引号内容

python - 使用正则表达式重新排序版权

c# - 将完整地址转换为单独的列

java - Primefaces 日历内联模式大小错误

Java NIO 存储路径列表

java - 根据 Play Framework 2.3中的当前上下文访问 Assets 文件

java - 使我的单选按钮在 Android 中成为选中状态

python - 从列表python中删除特定字符

regex - 无法使用 AWK 读取两个模式之间的行

java - netbeans:Class.forName 中的类路径