1
public class Test {
public static void main(String[] args){
Pattern a = Pattern.compile("(?=\\.)|(?<=\\.)");
Matcher b = a.matcher(".");
while (b.find()) System.out.print("+");
}
}
我一直在閱讀上Regular-Expressions.info環視部分,並試圖弄清楚它是如何工作的,我堅持用這個東西環視工作。當我運行上面的代碼的結果是++,我不明白,因爲「。」是與這種模式相對應的唯一標誌,顯然在「」後面或前面沒有任何東西。那麼它如何匹配兩次呢?如何正則單獨使用時
@hwnd我的理解lookarounds並不消耗任何標記,但我不明白的是,沒有任何標記在「。」之後或之前,因爲我只有lookbehead和lookahead而不是\ \。在我編譯的模式中,我認爲它不應該匹配任何東西,但不知何故它會匹配兩次。 – tareviverat
'^^^'由於[zero-width](https://regex101.com/r/rI5bH1/2)的位置,你得到兩個匹配。 – hwnd
@hwnd對不起,不停地打擾你......不是零寬度意味着它是一個斷言(應該有一段時間要麼在前面,要麼在當前位置後面),它不會消耗任何令牌(http:// stackoverflow.com/questions/3275375/zero-width-token)我不明白你的意思是零寬度的位置......你的意思是像「。」之前和之後的空白。 ? – tareviverat