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

我有这样的字符串

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 +将数字直到下一个字面“
并且您将所有信息进行匹配

链接地址: http://www.djcxy.com/p/76995.html

上一篇: regex just only match first substring

下一篇: Java regex possesive quantifiers