gpt4 book ai didi

regex - 了解否定字符类

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

正则表达式:

/''+[^f]/g

应用于字符串时:

don't '''theater'''  but not'''d and not do'''f

也匹配 do'''f 中的三个撇号。为什么 [^f] 不排除它?

fiddle 是here .

PS:我想找到连续的两个或多个撇号后跟一个非 f。

最佳答案

一旦在 2 个或多个 ' 之后找到 f+ 就会使正则表达式引擎回溯。您可以在否定前瞻中使用 ' 替代项来阻止(以免在使用 f' 时消耗字符 [^f],该字符成为匹配的一部分,因为取反字符类是一个消费模式,而先行是零宽度断言。

''+(?!['f])

参见 regex demo .如果 2 个或更多 ' 符号后跟 f',则 (?!['f]) 将阻止匹配。此外,您可以使用限制量词 {2,}(出现 2 次或更多次)编写它:'{2,}(?!['f])

如果您的正则表达式引擎支持防止回溯到量化模式的占有量词,请使用一个:

''++(?!f)
^^

参见 another demo (另一种写法是 '{2,}+(?!f))。

如果您使用的 .NET 正则表达式库不支持所有格量​​词,您可以改用原子组(其工作方式与所有格量词相同,但适用于整个组):

(?>'{2,})(?!f)

参见 .NET regex demo .

关于regex - 了解否定字符类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248870/

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