gpt4 book ai didi

javascript - 为什么 ((a(-b)?)(?!Z)) 与 "a-bZ"中的 a 匹配?

转载 作者:行者123 更新时间:2023-11-28 11:54:51 24 4
gpt4 key购买 nike

我想写一个匹配的正则表达式

a
a-b

但前提是这些序列后面没有 Z

((a(-b)?)(?!Z))

a matches a ok
a-b matches a-b ok
aZ empty ok
a-bZ matches a NOT OK

为什么“a-bZ”与第一个 a 匹配,尽管 (a(-b)?) 周围有一个组?我该如何纠正它?

在 javascript RegExp 中需要这个,但这应该不重要。尝试过 http://regexpal.com/

最佳答案

a-bZ 被匹配,因为 (-b)? 被忽略,而 (?!Z) 匹配 - 符号。

因为 (-b) 是可选的,所以 ((a)(?!Z)) 形式的每个字符串也会匹配。您可以匹配 (a(?!Z))|(a-b(?!Z))

但是,这将匹配 a-bZ (因为 a 后面跟着一个非 Z 字符)。

如果您想查找字符串的所有实例,例如 a-c 不匹配(即使 - 是非 Z 字符),你可以这样做:

(a(?![-Z]))|(a-b(?!Z))

关于javascript - 为什么 ((a(-b)?)(?!Z)) 与 "a-bZ"中的 a 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26197378/

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