在正则表达式中的字符串中不匹配回文

时间:2015-07-03 05:08:51

标签: regex

我试图取消用一组单词中观察到的回文。我能够编写匹配回文的语法。但是,我发现很难编写一个与回文无法匹配的语法并打印出其余的句子。

例如,语法应匹配这些单词集。

acritan
aesthophysiology
amphimictical
baruria

并留下这样的话

anallagmatic
bassarisk
chorioallantois
coccomyces
commotive
engrammatic
glossoscopia

如果你观察到上面的单词中间有回文,如

anallagmatic has "alla" in the middle
engrammatic  has  "amma" in the middle

所以这是我捕捉回文的语法。

(\w)(\w)\2\1

我需要一种语法来捕获与上述语法捕获相反的语法

2 个答案:

答案 0 :(得分:1)

^(?!.*?(\w)(\w)\2\1).+$

您只需使用negative lookahead即可确保没有回文。请参阅演示。

https://www.regex101.com/r/rL8wP1/6

答案 1 :(得分:0)

使用交替运算符

\S*(\w)(\w)\2\1\S*|(\S+)

从组索引3中获取所需的字符串。

如果您使用的是PHP,则可以使用(*SKIP)(*F)

\S*(\w)(\w)\2\1\S*(*SKIP)(*F)|\S+

https://www.paypal.com/vst/id=transaction-id-here