2017-06-01 45 views
0

適用於「456x56」的正則表達式(?=(\d+))\w+\1只能找到一個匹配「56x56」。爲什麼.NET正則表達式搜索引擎只能找到一個匹配項?

爲什麼搜索引擎不會繼續尋找下一個匹配「6x56」?

+1

因爲字符56x56已被'\ w + \ 1'佔用。你再也找不到他們了。 –

+0

這不是「下一場比賽」。它們重疊。它開始尋找第一場比賽結束後的下一場比賽*。如果它按照你想要的方式工作,那就沒用了。 –

回答

2

字符56x56已被\w+\1消耗。你再也找不到他們了。

如果你想在一次搜索字符串的一個位置,你需要把所有的圖案先行,是這樣的:

(?=((\d+)\w*\2)) 

預期的結果是捕獲組1 demo

由於lookahead是一個零寬度斷言(換句話說,只是一個測試),它不會消耗字符,這樣正則表達式引擎會嘗試字符串中的每個位置。

相關問題