我正在嘗試使用正則表達式來匹配具有3個唯一組的雙字母集。到目前爲止,我有這樣的:使用python正則表達式的雙字母匹配
r".*([a-z])\1.*([a-z])\2.*([a-z])\3.*"
但是,這並不佔獨特套雙字母。在此先感謝=)
我正在嘗試使用正則表達式來匹配具有3個唯一組的雙字母集。到目前爲止,我有這樣的:使用python正則表達式的雙字母匹配
r".*([a-z])\1.*([a-z])\2.*([a-z])\3.*"
但是,這並不佔獨特套雙字母。在此先感謝=)
也許是這樣嗎?似乎爲我工作。
r".*([a-z])\1.*((?=(?!\1))[a-z])\2.*((?=(?!\1))(?=(?!\2))[a-z])\3.*"
(?=expr)
是non-consuming regular expression,並(?!expr)
是正則表達式NOT運算符。
謝謝!,完美的作品! – user2696287
@Tigran不是最後一次將它與'\ 1'進行比較就足夠了嗎?因爲,我們確保'\ 1'和'\ 2'是不同的。 – thefourtheye
@thefourtheye,在這種情況下\ 3可以等於\ 2,這是不可接受的。 –
(?= expr)是非消費正則表達式 但是 (?!expr)也是非消費者表達式。這次不等於等於。
因此,將'not'包含在'等號'中並不會增加任何內容。它沒有那麼好。然而,堆疊非消費表達式並不總是可行的,而且單個非消費者將通過使用'或'('|'字符)來完成這項工作。
所以
R」 ([AZ])\ 1([AZ])\ 2 。(\ 1?!)。(\ 1 |!\ 2)([AZ] )\ 3.「
整理一些括號也。我認爲這是更清潔,並將在版本之間更可靠。
獨特集合的例子是什麼? – Himanshu
如何在應用您提供的正則表達式之後檢查唯一性? – alecxe
三重(或礦石)字母呢?他們被允許嗎? – Tomalak