gpt4 book ai didi

regex - 捕获组的负前瞻

转载 作者:行者123 更新时间:2023-12-04 15:09:45 25 4
gpt4 key购买 nike

我正在尝试这个挑战:

https://regex.alf.nu/4

我想匹配所有不包含 ABBA 模式的字符串。

比赛:

aesthophysiology
amphimictical
baruria
calomorphic

不匹配
anallagmatic
bassarisk
chorioallantois
coccomyces
abba

首先,我有一个正则表达式来确定 ABBA 模式。
(\w)(\w)\2\1

接下来我想匹配不包含该模式的字符串:
^((?!(\w)(\w)\2\1).)*$

然而,这匹配一切。

如果我通过为负前瞻指定文字来简化这一点:
^((?!agm).)*$

正则表达式与字符串“anallagmatic”不匹配,这是所需的行为。

所以看起来问题在于我在负前瞻中使用捕获组和反向引用。

最佳答案

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

^^

您可以使用 lookahead在这里。参见演示。您创建的前瞻是正确的,但您需要添加 .*这样它就不会出现在字符串中的任何地方。

https://regex101.com/r/vV1wW6/39

如果您创建第一组 non capturing,您的方法也将起作用。 .
^(?:(?!(\w)(\w)\2\1).)*$

^^

见演示。它不起作用,因为 \2 \1与您想要的不同。在您的正则表达式中,它们应该是 \3\2 .

https://regex101.com/r/vV1wW6/40

关于regex - 捕获组的负前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32862316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com