排除具有连续重复字符的单词

时间:2013-12-20 11:15:45

标签: regex

说我有这样的单词列表:mouse,abba,roar,accent

我需要一个匹配鼠标和咆哮的正则表达式,但不需要abba或重音​​,因为最后两个具有连续的重复字符(bb和cc)。

我设法提出以下模式,仅匹配单词WITH double连续字符:

.*(.)\1.*

然而,我需要的却恰恰相反,但我很难将其反转。

2 个答案:

答案 0 :(得分:7)

您可以使用:

\b(?:([a-z])(?!\1))+\b

它使用负向前瞻(?!..),它测试每个捕获本身不会被跟踪。为了确保模式在单词结束之前没有剪切单词或在单词的中间开始,我在每一侧添加了单词边界\b

另一种方式:

(?![a-z]*([a-z])\1)\b[a-z]+\b

答案 1 :(得分:4)

您可以使用这个基于前瞻性的正则表达式:

^(?:(.)(?!\1))*$