2012-12-30 167 views
3

我想在Python中編寫一個正則表達式來檢查一個字符串是否在一行中不包含多於2個相同的字母,例如,木有效,woood無效 我python連續正則表達式字母

[a-zA-z]{,2} 

嘗試過,但不起作用

回答

5

這樣做的最簡單的方法是使用反向引用兩次:

r"([a-zA-Z])\1\1" 

此檢查與你所要求的相反,所以否定結果。如果您將此用作較大正則表達式的一部分,請記住在需要時更改反向引用索引。

+0

不知何故,它不起作用,因爲當我使用以下內容:regex3 = re.compile(「[a-zA-z] \ 1 \ 1」)if regex3.match(string)== None:f.write字符串),我仍然會收到類似woood的結果... – wasp256

+0

作爲您需要在開始時添加'r'(原始)的工作的回參考,並且您也錯過了捕獲組。因此're.compile(「[a-zA-z] \ 1 \ 1」)應該是're.compile(r「([a-zA-z])\ 1 \ 1」)' –

+0

所有'r ''是讓Python本身不把''作爲一個轉義字符,它也可以將這個正則表達式寫成''([a-zA-Z])\\ 1 \\ 1「',但是使用'r'獲取更多可讀代碼。 –