排除模式字符串" abba"

时间:2014-04-05 14:37:37

标签: regex

例如,我想排除'拟合','空心','万亿' 但不是'你好'或'模式'

我已经完成了以下工作

(.)(.)\2\1

匹配'空心'或'拟合',但我无法否定这一点。

我得到的最接近的是

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

不包括'拟合'和'空洞'但不包括'万亿'

2 个答案:

答案 0 :(得分:4)

它与你所拥有的有点不同。您当前的正则表达式将检查第二个字符的pallindromicity(?)。由于您要检查整个字符串,因此需要将其更改为:

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

第一个锚点将确保仅在开头进行检查(否则,正则表达式可以在字符串末尾声明匹配)。

然后,负向前瞻中的.*将允许在字符串中的任何位置执行检查。如果有任何匹配,则整场比赛失败。

答案 1 :(得分:2)

它与万亿不匹配,因为你添加了^.意味着它必须在比赛开始之前有一个字符。对于前两种情况,它具有hf字符。因此,如果您将其更改为^..(?!(.)(.)\2\1),那么它将适用于trillion

一般来说,正则表达式将是:

(?!.*(.)(.)\2\1)
   ^^ any number of characters(other than \n)