如何匹配尖括号>但不是>>在vim中正则表达式搜索

发布于 2024-12-05 09:21:16 字数 266 浏览 0 评论 0原文

我已成功匹配 < 但没有在 < 前面(否定后向断言)或后面(否定前瞻断言),但是

<\@>!<<\@!

当我尝试匹配单个>排除>>以下表达式不起作用

>\@>!>>\@!

为什么?我应该如何进行搜索?

I had successfully matched < but not preceded (negative look-behind assertion) or followed (negative look-ahead assertion) by < by

<\@>!<<\@!

However while I tried to match a single > excluding >> the following expression does not work

>\@>!>>\@!

Why? How should I make the search?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离去的眼神 2024-12-12 09:21:16

您的 <\@>!<<<\@! 正则表达式:

  • <\@>! lireraly 匹配 <\@>!;我认为你的意思是 <\@
  • < 匹配 <
  • <\@!如果 < 在当前位置不匹配,则与零宽度匹配

它适用于 <\@。

否定查找后面断言的语法是 (atom)\@,其中 (atom) 是您不希望匹配的内容。在本例中,这是 <,因此是 <\@。

否定前瞻断言的语法是 (atom)\@!,其中 (atom) 是您不希望匹配的内容。在本例中,它是 <,因此是 <\@!

在 PCRE 中,正则表达式为:

(?<!<)<(?!<)

另一个正则表达式 (>\@>!>>\@!) 有效。

Your <\@>!<<\@! regex:

  • <\@>! lireraly matches <\@>!; I think you meant <\@<!
  • < matches the <
  • <\@! matches with zero-width if < doesn't match at the current position

It works with <\@<!<<\@!.

The syntax for negative look behind assertions is (atom)\@<!, where (atom) is the thing you don't want to be matched. In this case this is <, hence the <\@<!.

The syntax for negative look ahead assertions is (atom)\@!, where (atom) is the thing you don't want to be matched. In this case it's the <, hence the <\@!.

In PCRE the regex would be:

(?<!<)<(?!<)

The other regex (>\@>!>>\@!) works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文