我正在尝试使用正则表达式来匹配具有 3个唯一双字母集的单词。到目前为止我有这个:
r".*([a-z])\1.*([a-z])\2.*([a-z])\3.*"
但这并不能解释双字母的唯一集。在此先感谢=)
答案 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。“
还整理了一些牙套。我认为这更清洁,版本之间更可靠。