在下面我們來說一下我想說的郵政編碼,我試圖從結果中排除33333-
。
我做的:Java支持有條件的前瞻
String zip = "11111 22222 33333- 44444-4444";
String regex = "\\d{5}(?(?=-)-\\d{4})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(zip);
while (matcher.find()) {
System.out.println(" Found: " + matcher.group());
}
希望得到:
Found: 11111
Found: 22222
Found: 44444-4444
我想執行的格式:
5位任選接着 - 和4位。 5位數字只是一個連字符( - )是不想要
我得到異常:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown inline modifier near index 7
\d{5}(?(?=-)(-\d{4}))
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
我這不是正確的使用條件超前?
你想最後一個匹配的'44444-4444'或只是'44444'? –
我想得到'11111''22222''44444-4444',但不是'33333''。我認爲不會包含'33333'' – Cratylus