【问题标题】:Vim Regex for html用于 html 的 Vim 正则表达式
【发布时间】:2017-01-15 17:49:57
【问题描述】:

使用 vim 正则表达式折叠 html,尝试忽略在同一行开始和结束的 html 标记。

到目前为止,我有

if line =~# '<\(\w\+\).*<\/\1>'
  return '='
endif

这对于像&lt;a&gt;&lt;/a&gt; 这样的标签很有效,但是在处理自定义元素时,我遇到了问题,因为标签名称中有一个连字符。

例如,这个元素

<paper-input label="Input label"></paper-input>

需要在正则表达式中进行哪些更改才能同时捕获连字符?

【问题讨论】:

标签: regex vim


【解决方案1】:

正确的正则表达式(因this link而更新)是:

<\([^ >]\+\)[ >].*<\/\1>

<\([^ >]\+\)\>.*<\/\1>

这很重要[^ &gt;]。这将匹配直到whitespace&gt; 之前的任何字符,即它将同时匹配apaper_input

【讨论】:

  • 太好了,谢谢!有趣,谢谢你的信息!
  • @mhartington 老实说,我从未在搜索模式中使用过反向引用。它似乎有效,但我不确定这是否是正确的方法。
  • @mhartington 我正在进一步分析它并询问有关反向引用的问题:here。这个版本:&lt;([^ &gt;]+)[ &gt;].*&lt;\/\1&gt; 会更安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多