如何删除具有特定前缀的所有类(使用Visual Studio代码)?

时间:2016-09-15 13:52:01

标签: css regex visual-studio-code

我是基于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在查找字段中支持正则表达式,但在替换字段中不支持。

如何进行?

1 个答案:

答案 0 :(得分:1)

使用美元符号在Visual Studio代码中定义反向引用。

enter image description here

好吧,我应该在你的正则表达式上再写一些评论:

  • 评论正则表达式只适用于单行评论。如果一行中可以有两个或更多,请使用<!--(?:(?!-->).)*(ngIf|ngRepeat|ngInclude).*?-->(请注意调和的贪婪令牌(?:(?!-->).)*
  • </{0,1}(ng|cs)-.*>可能会出现类似的问题 - 使用否定的字符类[^<]*?来阻止标记溢出 - </?(ng|cs)-[^<]*?>(注意<应该使用>通常保持未序列化,{0,1}限制量词实际上等于?

请注意,从VSCode 1.29开始,您需要enable search.usePCRE2 option启用正则表达式模式中的前瞻。