2011-05-03 40 views
1

我正在尋找Python中的r"[^\1]"之類的東西。 例如,我想在每封信已取代另一個(例如文本匹配的話就像「你好」:「一個」由「ž」,「b」由「r「,...)。 「你好」可以「zcuuj」「prvva」,......我想對你說的Python:「找我與[a-z]開頭的單詞,然後一個字母是像,然後再兩個相同的字母,然後是信函至極的是別人的不同如何在Python中使用組補全?

我已經試過這種模式:

r"([a-z])([^\1])([^\1\2]){2}([^\1\2\3])" 

(不工作)

這一個:

r"([a-z])((?!\1))((?!\1|\2)){2}((?!\1|\2|\3])" 

(不工作)

+0

什麼不行?你遇到了什麼錯誤? – 2011-05-03 07:49:42

回答

0

按照documentation可以使用(?P<name>...)創建以後可以參考使用(?P=name)一組命名。

1

試試這個位置

^([a-z])(?!\1)([a-z])(?!(?:\1|\2))(([a-z])\4)(?!(?:\1|\2|\4))[a-z] 

我與你的第二個例子測試了它的在線here on rubular

的問題是,負前向斷言是不消費。這意味着你在檢查後需要使用這些字符。在與.以及參考文獻進行每次向前後,我都會這樣做。

你的第一個例子的問題是,你不能把這些引用放在字符組中。

更新:我更新了我的正則表達式和rubular鏈接,因爲第一個版本會後的第一個允許其他字符比[a-z]