guid 的 vim 模式是什么

What is the vim pattern for guid

我在类似于以下文件的文本文件中有 GUID 数据:

D3C8D467-52DA-4B4F-8821-A589019ADDE2

我在 VIM 中尝试了以下模式匹配。但是,他们没有成功。

[0-9A-F]{8}\-[0-9A-F]{4}\-[0-9A-F]{4}\-[0-9A-F]{4}\-[0-9A-F]{12}

[0-9A-F]{8}[-][0-9A-F]{4}[-][0-9A-F]{4}[-][0-9A-F]{4}[-][0-9A-F]{12}

VIM 中查找 GUID 的正确模式是什么?

Vim 需要一种不同的转义:

[A-F0-9]\{8}-[A-F0-9]\{4}-[A-F0-9]\{4}-[A-F0-9]\{4}-[A-F0-9]\{12}

检查 vim 中的 :help pattern-overview,文档非常好。

你的问题是你没有转义 {4} 部分但你应该转义,你正在转义破折号但你不应该转义。要解决此问题,只需执行

[0-9A-F]\{8}-[0-9A-F]\{4}-[0-9A-F]\{4}-[0-9A-F]\{4}-[0-9A-F]\{12}

要解决此类正则表达式问题,请尝试设置

:set incsearch

因此您可以在键入时看到匹配的搜索。我还推荐书签 this page,这是一个用于故障排除的绝佳资源 vim-regex.

您还可以做一些事情来提高样式的可读性。

  • 我建议使用 \x 元字符而不是范围,因为它们在功能上是等效的。这给出:

    \x\{8}-\x\{4}-\x\{4}-\x\{4}-\x\{12}
    
  • 不需要重复

    \x\{4}-
    

    三次。您可以只需要三个匹配项:

    \x\{8}-\(\x\{4}-\)\{3}\x\{12}
    
  • 您可以打开 'magic',这样可以减少反斜杠的使用。

    \v\x{8}-(\x{4}-){3}\x{12}
    

这是我所知道的最短、最易读的版本。