「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 –