正则表达式只匹配第一个子字符串
我有这样的字符串
BALANCE: “5048543747”,BALDEFOVD: “5119341413”,ACCTNO: “0001000918”,
我使用REGEX
(。*?),
结果我收到了第一个子字符串
BALANCE: “5048543747”
实际上,我想得到的结果是数组包含
{
BALANCE: “5048543747”
BALDEFOVD: “5119341413”
ACCTNO: “0001000918”
}
谁能帮我。 非常感谢。
编辑
我使用的代码
Pattern pattern = Pattern.compile(“(。*?),”);
Matcher matcher = pattern.matcher(“BALANCE:”5048543747 “,BALDEFOVD:”5119341413 “,ACCTNO:”0001000918 “,”);
if(matcher.find())
{
System.out.println(“found:”+ matcher.group(1));
}
我收到了结果
BALANCE: “5048543747”
试试这个代码:
String input = "BALANCE:"5048543747",BALDEFOVD:"5119341413",ACCTNO:"0001000918",";
String pattern = "(.*?),";
Pattern r = Pattern.compile(pattern);
List<String> matches = new ArrayList<String>();
Matcher m = r.matcher(input);
while (m.find()) {
matches.add(m.group(1));
}
看到一条评论后,你可能会更容易将这个字符串拆分为逗号。
while(matcher.find){
System.out.println("found: " + matcher.group(1));
}
Java中的匹配器起初可能有点混乱,特别是在匹配组时。 在上面的例子中, matcher.group(0)
总是整个正则表达式。 matcher.group(1)
与您在正则表达式中指定的第一组匹配。 如果你碰巧有一个(你的例子没有), matcher.group(2)
会返回匹配到你的正则表达式中的第二组 。 调用matcher.find
来检索下一组匹配项。
这将是有用的
(w+:"d+")
w +将整个单词直到字面值:
然后处理文字“
d +将数字直到下一个字面“
并且您将所有信息进行匹配