【发布时间】:2021-04-20 06:18:56
【问题描述】:
我有这个示例字符串
ABC : 5149427501\nDEF : 4168170001\nGHI : RC81020329801823\nJKL : 24938699\nMNO : 941580078
我想使用正则表达式提取字符串ABC和JKL对应的值。
因此该模式应该返回 5149427501 作为匹配 ABC 和 24938699 作为匹配 JKL。
我一直在尝试为此制定正则表达式和代码,但它不起作用。
String line = "ABC : 5149427501\nDEF : 4168170001\nGHI : RC81020329801823\nJKL : 24938699\nMNO : 941580078";
String pattern = "^\\s*(ABC|JKL)\\s*:\\s*(\\d+)\\s*";
// Create a Pattern object
Pattern r = Pattern.compile(pattern, Pattern.MULTILINE);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
System.out.println("Found value: " + m.group(4) );
} else {
System.out.println("NO MATCH");
}
但它不起作用。
我是正则表达式的初学者。你能建议如何在字符串中找到模式吗?
【问题讨论】:
-
您的模式有效,但我认为您必须使用
while (m.find()) {并获取第 1 组和第 2 组的值。请参阅ideone.com/cBocRG