我有一个像下面这样的模式

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。

谢谢

最佳答案

您可以将make last part设为可选:

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


RegEx Demo

10-08 18:12