TL; DR: 大括号是否提供负面预测能力,将结果限制为&#34;不超过最大结果?&#34; < / p>
我可以使用花括号来指定要匹配的最小和(可选)最大字符数:
[abc]{5} // 5 characters
[def]{2,} // min 2, but no max
[ghi]{10,20} // 10-20, inclusive
这很适合发现&#34;合并冲突&#34; VCS输出中的行:
<<<<<<<
=======
>>>>>>>
使用模式^[<=>]{7}
。
但是花括号有一个&#34;但是没有更多&#34;选项?喜欢与此功能相匹配的内容:^[<=>]{7}(?![<=>])
简单英语:&#34; <
,=
或>
的7个字符,但下一个字符不是其中之一。&#34;
有些评论栏可能如下所示:
==================================
Some nicely-formatted comment here
==================================
^[<=>]{7}
模式认为这是匹配,因为前7个=
字符符合标准。 \b
似乎不起作用,因为这些字符不符合&#34;字界限&#34;。 \s
部分有效,因为<<<<<<<
和>>>>>>>
的VCS输出行通常后跟空格加分支名称,=======
后跟换行符(\s
在技术上匹配),但也捕获了空白字符本身。
大括号是否可以使用{n,m!}
之类的内容,其匹配时间至少n
次,但不会超过m
次?
或者我是否仍然坚持使用前瞻操作符(?!...)
或空格\s
?
答案 0 :(得分:2)
大括号是否提供负面预测能力
没有
你几乎不需要这个,通常你只是匹配下一个非支撑的角色。如果你确实需要它,你只需要明确附加负向前瞻。
在您的情况下匹配^((<{7}|>{7})(\s\w+)?)|={7})$
就可以了。