gpt4 book ai didi

regex - 大括号是否有 "but not more"运算符?

转载 作者:行者123 更新时间:2023-12-02 07:29:46 24 4
gpt4 key购买 nike

TL;DR: 大括号是否提供负向前看能力,将结果限制为“不超过最大结果?”

我可以使用大括号来指定要匹配的最小和(可选)最大字符数:

[abc]{5}      // 5 characters
[def]{2,} // min 2, but no max
[ghi]{10,20} // 10-20, inclusive

这对于在 VCS 输出中查找“合并冲突”行非常有用:

<<<<<<<
=======
>>>>>>>

其中模式 ^[<=>]{7}已使用。

但是大括号有“但不再”选项吗?就像与此功能相匹配的东西:^[<=>]{7}(?![<=>])

用简单的英语来说:“<=> 的 7 个字符,但下一个字符不是其中之一。”

一些评论 block 可能如下所示:

==================================
Some nicely-formatted comment here
==================================

^[<=>]{7}模式认为这是一个匹配,因为前 7 =角色确实符合标准。一个\b似乎不起作用,因为这些字符不符合“单词边界”。一个\s部分有效,因为 <<<<<<< 的 VCS 输出线和>>>>>>>通常后跟一个空格加分支名称,以及 =======后面跟着一个换行符(\s 技术上匹配),但它也捕获该空白字符本身。

大括号可以使用类似 {n,m!} 的东西吗?它至少匹配 n次,但不会发生过去 m次?

或者我是否坚持使用前瞻运算符 (?!...)或空格 \s

最佳答案

Do curly brackets provide a negative look-ahead ability

没有。

你几乎不需要这个,通常你只需匹配下一个字符,无论如何它都是非大括号。如果您确实需要它,只需显式附加否定前瞻即可。

匹配^((<{7}|>{7})(\s\w+)?)|={7})$在你的情况下就可以了。

关于regex - 大括号是否有 "but not more"运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359253/

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