例如,我想排除'拟合','空心','万亿' 但不是'你好'或'模式'
我已经完成了以下工作
(.)(.)\2\1
匹配'空心'或'拟合',但我无法否定这一点。
我得到的最接近的是
^.(?!(.)(.)\2\1)
不包括'拟合'和'空洞'但不包括'万亿'
答案 0 :(得分:4)
它与你所拥有的有点不同。您当前的正则表达式将检查第二个字符的pallindromicity(?)。由于您要检查整个字符串,因此需要将其更改为:
^(?!.*(.)(.)\2\1)
第一个锚点将确保仅在开头进行检查(否则,正则表达式可以在字符串末尾声明匹配)。
然后,负向前瞻中的.*
将允许在字符串中的任何位置执行检查。如果有任何匹配,则整场比赛失败。
答案 1 :(得分:2)
它与万亿不匹配,因为你添加了^.
意味着它必须在比赛开始之前有一个字符。对于前两种情况,它具有h
和f
字符。因此,如果您将其更改为^..(?!(.)(.)\2\1)
,那么它将适用于trillion
。
一般来说,正则表达式将是:
(?!.*(.)(.)\2\1)
^^ any number of characters(other than \n)