正则表达式多重排除

时间:2017-11-16 10:59:11

标签: regex capture-group

我想制作一个与abbc等群组匹配的正则表达式,其中每个字母都是不同的字符。

  • 它应包含三个捕获组
  • 所有捕获组应包含不同的字符
  • 第二个应该匹配两次

示例:

  

银行(不匹配,因为第二个和第三个字符不相同)

     

车(匹配)

     

预订(匹配)

     

便便(不匹配,因为第一个和最后一个字符是相同的)

到目前为止,我一直在尝试这样的事情:

(.)(.(?!\1))\2(.(?!\1)(?!\2))

然而,这也匹配poop。我该如何纠正?

1 个答案:

答案 0 :(得分:1)

你的前瞻定位有点偏,你可以像

那样做
(.)(?!\1)(.)\2(?!\1|\2)(.)

请参阅https://regex101.com/r/heBJar/1

您可能需要根据需要应用锚点或单词边界。您还应该考虑使用[a-z][[:alpha:]]或类似内容而不是.