java - 使用java正则表达式模式获取部分匹配字符串

标签 java regex

我有一个如下所示的模式

Sentence = "@502348@502002662[000861@10";
Pattern = "^@(\\d{6})@*(\\d{9})\\[(\\d{6})@(\\d{2})";

Matcher regexMatcher = regexPattern.matcher(Sentence);
    if (regexMatcher.find()) 
      str1= regexMatcher.group(1);
      str2 = regexMatcher.group(2);
      str3 = regexMatcher.group(3);
      str4 = regexMatcher.group(4);
    }

如果句子匹配得当,上面的方法就可以正常工作。但我的要求是,如果模式不匹配,应该返回部分结果。

例如,如果 Sentence = "@114142@000017000["那么我想获取 str1 和 str2。

谢谢

最佳答案

您可以使用使最后一部分可选:

^@(\\d{6})@*(\\d{9})(?:\\[(\\d{6})@(\\d{2}))?

RegEx Demo

关于java - 使用java正则表达式模式获取部分匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25022120/

相关文章:

java - 我需要知道如何在 java 中循环 .wav 文件 n 次

JavaFX 2.2 javadoc?

Java PatternSyntaxException : Illegal repetition on string substitution?

regex - OCLinEcore 和 Regex 创建有效的 IPv4 字符串

c# - 比赛收集超时

java - Java中的计算方法计算器产生空字符串错误

java - 为什么我无法在 Eclipse 中的现有 Maven 项目中创建 Servlet

c# - 正则表达式中的 Unicode 字符

javascript - 用js替换一个字符串为空格的单词

java - 将二维数组中的所有元素向下移动