2016-09-15 55 views
1

我是一個基於Angular的HTML項目中的交互設計師。我試圖根據另一個團隊製作的HTML模板創建一個新的HTML模板。我使用Firebug來捕獲現有的HTML並在Visual Studio代碼中進行修改。如何刪除具有某個前綴的所有類(使用Visual Studio代碼)?

除了對我有用的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]*([^"]*")(限制:每移除屬性class只有一個ng-類),但我不能取代他們使用\1\2。看來Visual Studio Code在查找字段中支持正則表達式,但在替換字段中不支持正則表達式。

如何繼續?

+1

什麼'$ 1 $ 2'?替換字段從不支持*正則表達式*模式,而是*替換*模式。 –

+0

@WiktorStribiżew你說得對,那是訣竅,謝謝! – bjornte

回答

1

使用美元符號在Visual Studio代碼中定義反向引用。

enter image description here

嗯,我應該放棄一對夫婦的更多的評論在您的正則表達式:

  • 註釋的正則表達式將僅與單上一行註釋工作。如果可以有兩個或兩個以上在同一行,用<!--(?:(?!-->).)*(ngIf|ngRepeat|ngInclude).*?-->(注意鍛鍊貪婪令牌(?:(?!-->).)*
  • 類似的問題都可以通過</{0,1}(ng|cs)-.*>出現 - 使用否定的字符類[^<]*?,以防止任何標籤溢出 - </?(ng|cs)-[^<]*?>(注意<應因爲>使用的往往留下序列化和{0,1}限制量詞其實等於?
+0

再次感謝。當你提供'$'解決方案後,我發現''class =「[^」] *)ng- [az] *([^「] *」)'也有錯誤,當有多個'ng-'類。我是新來的正則表達式,並推動我的運氣:-) – bjornte

+0

如果你提供一個用例,我會盡力幫助。 –

+0

我正要解釋,然後我明白我誤解了導致錯誤的原因:-)我應該用[-a-z]替換[a-z]以捕獲具有多個連字符的項目,例如'ng-isolate-scope'。儘管如此,我仍然無法在單個'class'屬性中捕獲多個'ng-'類。 – bjornte

相關問題