我是基于Angular的HTML项目中的交互设计师。我正在尝试基于另一个团队制作的HTML模板创建一个新的HTML模板。我使用Firebug捕获现有的HTML并在Visual Studio Code中修改它。
除了对我有用的HTML之外,我还获得了大量的ng-
和cs-
标签,属性,类和注释(我假设)用于填充模板。我想将它们全部删除。
此时我已成功使用以下正则表达式删除注释,标签和属性:
(<!--.*(ngIf|ngRepeat|ngInclude).*-->)|(</{0,1}(ng|cs)-.*>)|((ng|cs)-[a-z-]*="[^"]*")
要打破它:
<!--.*(ngIf|ngRepeat|ngInclude).*-->
</{0,1}(ng|cs)-.*>
(ng|cs)-[a-z-]*="[^"]*"
但暂时我被困在课堂上。我可以找到我要删除的内容:(class="[^"]*)ng-[-a-z]*([^"]*")
(限制:每个ng-
属性只删除一个class
类),但我不能使用\1\2
替换。似乎Visual Studio Code在查找字段中支持正则表达式,但在替换字段中不支持。
如何进行?
答案 0 :(得分:1)
使用美元符号在Visual Studio代码中定义反向引用。
好吧,我应该在你的正则表达式上再写一些评论:
<!--(?:(?!-->).)*(ngIf|ngRepeat|ngInclude).*?-->
(请注意调和的贪婪令牌(?:(?!-->).)*
)</{0,1}(ng|cs)-.*>
可能会出现类似的问题 - 使用否定的字符类[^<]*?
来阻止标记溢出 - </?(ng|cs)-[^<]*?>
(注意<
应该使用>
通常保持未序列化,{0,1}
限制量词实际上等于?
)请注意,从VSCode 1.29开始,您需要enable search.usePCRE2
option启用正则表达式模式中的前瞻。