我的输入字符串是
String input=" 4313 :F:7222;scott miles:F:7639;Henry Gile:G:3721";
这是一个带分号分隔符的字符串。它可以包含由分号
分隔的任意数量的值我想在java中使用组捕获功能并捕获以下值(即:分隔符)
4313 :F:7222
scott miles:F:7639
Henry Gile:G:3721
我知道我可以在Spring类下使用split函数,但出于某种原因我想在这里使用group capture。
我试过
Matcher myMatcher = Pattern.compile("(.*?);").matcher(input);
while (myMatcher.find()) {
System.out.println("group is " + myMatcher.group());
}
输出
group is 4313 :F:7222;
group is scott miles:F:7639;
但预期输出
group is 4313 :F:7222
group is scott miles:F:7639
group is Henry Gile:G:3721
我没有得到如何捕获最后一个分号后的最后一个值,而且我想摆脱分号,正如我在预期的结果中提到的那样。
答案 0 :(得分:5)
答案 1 :(得分:1)
你正在寻找以半圆形结束的小组。这就是为什么你的正则表达式只匹配两组而不是3组。 您可以使用寻找以不是半分号的每个符号开头的组的方法。
([^;]+)
或者您可以在解析输入字符串时使用半字符或行尾字符:
(.+?)(;|$)
这两种方法都给出了预期的结果。
P.S。对于第二个,您需要获得预期结果的第一组:
System.out.println("group is " + myMatcher.group(1));