正则表达式只匹配第一个子串

时间:2016-07-01 04:38:04

标签: java regex

我有一个像这样的字符串

  

BALANCE:“5048543747”,BALDEFOVD:“5119341413”,ACCTNO:“0001000918”,

我使用的是REGEX

  

(。*?),

结果我收到的第一个子字符串是

  

BALANCE: “5048543747”

实际上,我想要的结果是数组包含

  

{

     

BALANCE: “5048543747”

     

BALDEFOVD: “5119341413”

     

ACCTNO: “0001000918”

     

}

任何人都可以帮助我。非常感谢。

修改

我正在使用

代码
  

模式模式= Pattern.compile(“(。*?),”);

     

Matcher matcher = pattern.matcher(“BALANCE:\”5048543747 \“,BALDEFOVD:\”5119341413 \“,ACCTNO:\”0001000918 \“,”);

     

if(matcher.find())

     

{

     

System.out.println(“found:”+ matcher.group(1));

     

}

我收到的结果

  

BALANCE: “5048543747”

3 个答案:

答案 0 :(得分:1)

试试这段代码:

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));
}

在看到一条评论后,您可能更容易将字符串拆分为逗号。

答案 1 :(得分:0)

while(matcher.find){
    System.out.println("found: " + matcher.group(1));
}

Java中的Matcher起初可能有点令人困惑,尤其是在对组进行匹配时。在上面的示例中,matcher.group(0)始终是整个正则表达式。 matcher.group(1)与您在正则表达式中指定的第一组相匹配。 matcher.group(2)会将匹配项返回到正则表达式中的第二组,如果您碰巧有一个(您的示例没有)。致电matcher.find以检索下一组比赛。

答案 2 :(得分:0)

这将是有用的

(\w+:"\d+")

\ w +取整个字直到字面:
然后处理文字&#34;
\ d +取数字直到下一个文字&#34;
并且您将所有信息都与

相匹配