Regex 正则表达式,避免匹配连续字符

Regex 正则表达式,避免匹配连续字符,regex,Regex,我正在努力提高我的正则表达式技能。 我做不了这个练习 必须匹配没有连续相同字符的单词。 为了说明这一点,我们应该避免像abba、baab、czzc这样的模式 我看到的唯一方法是使用捕获组: ([a-z])([a-z])\2\1 然后进行负面展望: (?!([a-z])([a-z])\2\1) ^(?:(.)(?!\1))*$ 但在网站上,它不工作,因为它不匹配任何东西 有什么建议吗? 谢谢你使用消极前瞻: (?!([a-z])([a-z])\2\1) ^(?:(.)(?!\1))*$

我正在努力提高我的正则表达式技能。 我做不了这个练习

必须匹配没有连续相同字符的单词。 为了说明这一点,我们应该避免像abba、baab、czzc这样的模式

我看到的唯一方法是使用捕获组:

([a-z])([a-z])\2\1
然后进行负面展望:

(?!([a-z])([a-z])\2\1)
^(?:(.)(?!\1))*$
但在网站上,它不工作,因为它不匹配任何东西

有什么建议吗?
谢谢你

使用消极前瞻:

(?!([a-z])([a-z])\2\1)
^(?:(.)(?!\1))*$
说明:

^               from the start of the input
    (?:
        (.)     match AND capture a single character
        (?!\1)  then assert that what follows is a different character (not the same)
    )*          match zero or more such matching characters
$               end of the input

另一种可能更干净的方法是在模式的一开始就进行全局负面展望:

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

这将在一开始就断言字符串中的任何位置都没有重复的字符。

感谢Tim Biegeleisen,下面是答案。
^(?。*(.*)(.2\1)。*$
^(?!cr | pal | tar)[a-z]{1,4}([a-z])\1[a-z]{0,5}$ 这在你提供的链接中对我有效。我想我们必须用连续的字母来匹配模式。但也有一些例外,我不得不在开始时使用消极的前瞻。我已使用([a-z])\1匹配由可能限制的可能字符包围的连续字符。希望这有帮助! 附上截图以供参考


我想那应该是
[a-z]*foo[a-z]*
匹配项都在左侧和右侧的可选字符a-z之间有foo。对于捕获组,它可能是
^[a-z]*f(.)\1[a-z]*$
这是第一个练习的答案,我在第六个练习“abba”要避免的词语是:abba anallagmatic basarisk chorioallantois coccomyces commotative engrammatic glossocopia hexacoralla hippogriffin易燃otto过度附着saffarid Saraceniaceae Scillipirin tlapallan万亿不易接近的未融合的Warrandice谢谢你的回答。你帮了很多忙。我想拒绝像abba-caac这样的模式,但接受abbc-caab,所以我仔细考虑了一下你的答案<代码>^(?。。*()\2\1.*$