我试图找到一种使用正则表达式来匹配具有3 组独特双字母的单词的方法。到目前为止,我有这个:
r".*([a-z])\1.*([a-z])\2.*([a-z])\3.*"
但这并不能解释双字母的唯一集合。提前感谢=)
也许像这样?似乎对我有用。
r".*([a-z])\1.*((?=(?!\1))[a-z])\2.*((?=(?!\1))(?=(?!\2))[a-z])\3.*"
(?=expr)
是一个非消耗正则表达式,并且(?!expr)
是正则表达式 NOT 运算符。
(?=expr) 是一个非消费正则表达式,但是 (?!expr) 也是一个非消费表达式。这一次,一个不等于代替了一个等于。
因此,将“not”括在“equals”中不会增加任何内容。没有它也可以工作。然而,堆叠非消耗表达式并不总是有效,并且单个非消耗表达式将通过使用“或”(“|”字符)来完成这项工作。
所以
r". ([az])\1. (?!\1)([az])\2. (?!\1|\2)([az])\3. "
还整理了一些牙套。我认为这更干净,并且版本之间会更可靠。