vim:无法正确匹配新行后的字符

vim:无法正确匹配新行后的字符

在 vim 中,我尝试匹配所有包含但下一行^A.没有 a 的行。 我将其与 匹配。这正确地识别了问题 2 中的相关部分,但没有识别问题 3 中的相关部分。我不知道为什么。结尾匹配。并且应该匹配但实际上没有。我做错了什么?B.
/\v^A\. .*$\n[^B]\n\n[^B]\n

1. Hello?
A. aaaaaaaa
B. bbbbbb
C. ccccccc
D. ddddd

2. Hello?
A. aaaaaaaa B. bbbbbb
C. ccccccc
D. ddddd


3. Hello?
A. aaaaaaaa B. bbbbbb C. ccccccc D. ddddd

4. Hello?

答案1

作为:help /[\n]文档,类似的集合与[^B]行尾字符不匹配。

这使得它与 Vi 兼容:如果没有“_”或“\n”,集合就不匹配行尾。

您有两个选择:要么明确地包含换行符,这样后面跟着空行的行也匹配:

/\v^A\. .*$\n([^B]|$)/

或者做一个负面前瞻匹配/\@!

/\v^A\. .*$\nB@!/

相关内容