3

我试图找到一种使用正则表达式来匹配具有3 组独特双字母的单词的方法。到目前为止,我有这个:

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

但这并不能解释双字母的唯一集合。提前感谢=)

4

2 回答 2

4

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

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

(?=expr)是一个非消耗正则表达式,并且(?!expr)是正则表达式 NOT 运算符。

于 2013-08-19T12:09:31.047 回答
0

(?=expr) 是一个非消费正则表达式,但是 (?!expr) 也是一个非消费表达式。这一次,一个不等于代替了一个等于。

因此,将“not”括在“equals”中不会增加任何内容。没有它也可以工作。然而,堆叠非消耗表达式并不总是有效,并且单个非消耗表达式将通过使用“或”(“|”字符)来完成这项工作。

所以

r". ([az])\1. (?!\1)([az])\2. (?!\1|\2)([az])\3. "

还整理了一些牙套。我认为这更干净,并且版本之间会更可靠。

于 2014-02-13T11:30:42.303 回答