使用python正则表达式进行双字母匹配

时间:2013-08-19 12:03:14

标签: python regex

我正在尝试使用正则表达式来匹配具有 3个唯一双字母集的单词。到目前为止我有这个:

r".*([a-z])\1.*([a-z])\2.*([a-z])\3.*"    

但这并不能解释双字母的唯一集。在此先感谢=)

2 个答案:

答案 0 :(得分:4)

也许是这样的?似乎对我有用。

r".*([a-z])\1.*((?=(?!\1))[a-z])\2.*((?=(?!\1))(?=(?!\2))[a-z])\3.*"

(?=expr)non-consuming regular expression(?!expr)是正则表达式NOT运算符。

答案 1 :(得分:0)

(?= expr)是一个非消费的正则表达式 然而 (?!expr)也是非消费者表达。这次不等于代替等于。

所以将'not'中的'not'括起来不会增加任何东西。没有它也可以。但是,堆叠非消费表达式并不总是有效,并且单个非消费表达式无论如何都会通过使用'或'('|'字符)来完成工作。

所以

R” ([AZ])\ 1 ([AZ])\ 2. 。。(\ 1!)(\ 1 |?!\ 2)([AZ ])\ 3。

还整理了一些牙套。我认为这更清洁,版本之间更可靠。