我使用angularJS,并有各种命令遵循命名约定,如“应用程序数据网格”,“应用程序滑块”,“应用程序传送带”或“应用程序编译一些“模板”等。实质上,它是正常的角度指令命名约定[app name]-[dash delimited words]
。崇高文本HTML语言语法高亮无法正确匹配它们的正则表达式。它会突出显示"<app-carousel"
或"<app-some-long-directive-name"
中的“应用”,但不会突出显示整个标签名称。崇高的文本语法突出显示正则表达式不工作
这里是在HTML.tmLanguage
文件中的预定义的正则表达式:
(<)([a-zA-Z0-9:]++)(?=[^>]*></\2>)
我试图第二匹配组的结肠之后加入破折号:
(<)([a-zA-Z0-9:-]++)(?=[^>]*></\2>)
第二正则表达式的正则表达式测试仪工作,但在Sublime Text中不起作用。
此外,我已经下载了一个AngularJS插件,它给了我一个AngularJS-HTML语言定义......它也有同样的问题。
如何修复正则表达式,使其与突出显示的完整标记名称相匹配?
我不知道这个表达式应该如何搭配你贴什么,什么测试你尝试这是什么?你为你的示例文本使用? – Vajura 2014-10-17 05:32:58
我使用的链接(http://www.regexr.com/ “RegExr”)来测试以下内容:'([A-ZA-Z0-9: - ] +)'它匹配,因为我希望它会在RegExr中匹配,尽管它在Sublime中不匹配。Sublime的原RegEx在RegExr中不起作用(双倍加上它),也许是由于使用了不同的引擎?我用“blah-blah-blah”作为我的示例文本,只是为了测试所有三个单词和他们的连字符是否匹配。 – 2014-10-20 18:24:41
'++'确实在正则表达式中有意义:它表示没有回溯。更具体地说,在这种情况下,它意味着一旦发现匹配'(<)',只有'[a-zA-Z0-9: - ] +'的最佳匹配;如果这不能扩展为匹配整个正则表达式,它将尝试找到另一个匹配'(<)'。例如,'< app-foo id =“foo”> < app-foo >''会失败,因为'[a-zA-Z0-9: - ] ++'无法匹配'app-foo',因为它可以匹配'app-foo id =“foo”'。 (你也可以用'?+'和'{m,n} +'。) – 2014-11-09 15:48:47