我刚开始使用 UltiSnips for Vim,现在我正在尝试转换。我无法理解截屏视频中给出的第一个示例。转换是为了让 HTML 标记删除除结束标记的标记名称之外的所有内容。片段的相关部分如下所示
<$1>
</${1/(\w+).*/$1/}>
无论我怎么看,我从这个正则表达式中得到的是它说“匹配一个完整的单词,然后是之后的所有字符。我用 RegExr 尝试过,我的假设是正确的。如果给定一个文本"div class="
上面的正则表达式匹配整个文本。
我也在 python 上尝试过(因为 Ultisnips 使用 python re 模块)。
a = re.search('(\w+).*/$1/)
会给我整个字符串a.group()
。它也会给我(0,10)
作为答案a.span()
。然而,UltiSnips 需要 1 美元才能成为 div。
我在想这个错误的方式吗?这到底是如何工作的?
在 regex101.com 上尝试了正则表达式后,我将 div 作为匹配组 #1。如果我使用 div(\w+)
而不是(\w+).*
. 但是当我尝试使用
</${1/(\w+)/$1/}>
作为转换语法,我在 ( div class=
) 中键入的整个字符串都包含在内。基本上它匹配整个字符串。