“5:无效的号码:123 *** 345”如何让Java的正则表达式匹配器匹配鉴于这样的错误消息的分隔符
我想消息拆分为error_code
和error_text
。在这种情况下,我想要5
和Invalid number : 123***345
。
然而,这段代码拆分成匹配 5 : Invalid number
和123***345
这意味着正则表达式匹配上次:
。
Pattern PROCESSOR_ERROR_INFO_PATTERN_ONE = Pattern.compile("(.*):(.*)");
Matcher matcherOne = PROCESSOR_ERROR_INFO_PATTERN_ONE.matcher(error_message);
if (matcherOne.matches()) {
processorErrorCode = matcherOne.group(1).trim();
processorErrorMessage = matcherOne.group(2).trim();
}
顺便说一下,不能保证error_code只是数字。所以我不能使用正则表达式,如(\\d+):(.*)
有没有一种方法可以控制匹配第一个:
而不是默认的最后一个:
?
很好的回答。在旁注中,Oracle教程将其称为不情愿的量词:https://docs.oracle.com/javase/tutorial/essential/regex/quant.html –