使用java正则表达式模式获取部分匹配字符串
我有一个模式如下使用java正则表达式模式获取部分匹配字符串,java,regex,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 = regexMatche
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);
}
如果句子适当匹配,上面的一个就可以了。但我的要求是,如果模式不匹配,应该返回部分结果
例如,如果句子=”@114142@000017000[“然后我想得到str1和str2
谢谢您可以使用“使最后一部分可选”:
^@(\\d{6})@*(\\d{9})(?:\\[(\\d{6})@(\\d{2}))?
我不确定这是否是你正在寻找的,但你可以尝试类似的东西
^@(\\d{6})(?:@*(\\d{9})(?:\\[(\\d{6})(?:@(\\d{2}))?)?)?
这使得
@xxxxxx@xxxxxxxxx[xxxxxx@xx
^^^^^^^^^^^^^^^^^^^^ - optional
^^^^^^^^^^ - optional
^^ - optional