html - Sublime Text 语法突出显示正则表达式不起作用

标签 html regex tags sublimetext2 syntax-highlighting

我使用 angularJS,并且有各种遵循命名约定的指令,例如“app-data-grid”、“app-slider”、“app-carousel”或“app-compile-some-template”等。本质上,它是正常的角度指令命名约定 [app name]-[dash delimited words] 。 Sublime Text HTML 语言语法突出显示无法与其正则表达式正确匹配。它将突出显示 "<app-carousel" 中的“app”或"<app-some-long-directive-name"但不会突出显示整个标签名称。

这是 HTML.tmLanguage 中预定义的正则表达式文件:

(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)

我尝试在第二个匹配组的冒号后添加破折号:

(&lt;)([a-zA-Z0-9:-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)

第二个正则表达式在正则表达式测试器中工作,但在 Sublime Text 中不起作用。

此外,我还下载了一个 AngularJS 插件,它给了我一个 AngularJS-HTML 语言定义......它也有同样的问题。

如何修复正则表达式,使其与突出显示的完整标记名称匹配?

最佳答案

转到首选项>>设置-用户。

在此 JSON 上,将名为“HTML”的iten 添加到ignored_pa​​ckages 数组中,如下所示:

"ignored_packages":
    [
        "Vintage",
        "HTML"
    ]

保存文件。

现在转到“首选项”>>“浏览包”,复制 HTML 目录并将其重命名为“HTMLAngularJS”。

进入HTMLAngularJS目录并将文件“HTML.tmLanguage”重命名为“HTMLAngularJS.tmLanguage”。

编辑“HTMLAngularJS.tmLanguage”文件,找到这两个正则表达式:

<string>(&lt;)([a-zA-Z0-9:]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string> Line 45

and

<string>(&lt;/?)([a-zA-Z0-9:]+)</string> Line 514

只需在双点后添加斜杠和 - ,应如下所示:

<string>(&lt;)([a-zA-Z0-9:\-]++)(?=[^&gt;]*&gt;&lt;/\2&gt;)</string>

and

<string>(&lt;/?)([a-zA-Z0-9:\-]+)</string>

保存文件并快乐!

问候!

关于html - Sublime Text 语法突出显示正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417473/

相关文章:

javascript - 是否可以将字体图标转换回其私有(private)使用代码?

jQuery ReplaceWith 不保留 DOM 中元素的链接?

Java 正则表达式以条件替换器开头和结尾

regex - R:可变宽度lookbehind的解决方法

mysql - 基于公共(public)标签搜索相关项目的算法

html - 为什么 blockquote 元素不继承父 p 的样式?

python - 在多个分隔符上拆分字符串,但不单独在空格上拆分

mysql - 多标签搜索查询不起作用

php - 数据库中标签系统的实现

javascript - 使用从 HTML5 数据中提取的 JavaScript 比较两个日期