繁体   English   中英

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

[英]get the partial match string using java regex pattern

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

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}))?

正则演示

我不确定这是否是您要找的东西,但是您可以尝试类似

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

这使得

@xxxxxx@xxxxxxxxx[xxxxxx@xx
       ^^^^^^^^^^^^^^^^^^^^ - optional
                 ^^^^^^^^^^ - optional
                         ^^ - optional

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM