java - 捕获分号分隔字符串的组缺少最后一个组

标签 java regex regex-group

我的输入字符串是

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 函数,但由于某种原因我想在这里使用组捕获。

我试过了

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

我不知道如何捕获最后一个分号之后的最后一个值,而且我想摆脱分号,正如我在预期结果中提到的那样。

最佳答案

尝试使用正则表达式:

([^;]+)

这应该会获得您需要的所有组。

regex101 demo .

关于java - 捕获分号分隔字符串的组缺少最后一个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716587/

相关文章:

java - 关于for(),为什么使用i++而不是++i?

java - Netty Websocket

regex - 使用正则表达式从 LDAP 路径中提取名称

java - 正则表达式以避免 URL 中的可选组

python - 正则表达式可在更多条件下匹配版权声明中的公司名称

java - 在java中一起使用BufferedWriter和DataOutputStream

Java servlet doGet() 在第一次调用后不刷新

regex - 如何从azure数据流中的字符串列中提取dd-mm-yyyy格式的数据?

java - 正则表达式: Capture Negation of Combination of Multiple Regular Expressions

regex - 逗号分隔的前缀列表,内部有逗号