簡體   English   中英

Sublime Text:復雜的正則表達式-搜索和替換

[英]Sublime Text: complicated regex - search and replace

我想做一個快速測試,看看<span ng-bind="test.id"></span>是否比使用{{test.id}}進行數據綁定更好。 我是否可以在整個應用的正則表達式中做到這一點?

我必須確保它不會替換<div id="chat-{{otherPerson.id}}" ...>之類的標記內的變量,因此它只能替換<div class="message">{{message.body}}</div>

我還需要能夠檢查是否使用了過濾器: {{ otherPerson | fullname}} {{ otherPerson | fullname}}

使用regex甚至可以實現,還是我需要編寫一個艱巨的任務來解決呢?

我相信您應該可以使用這種正則表達式

/([^'"])\{\{([^\}|]+)\}\}/gi
  1. 匹配1 =任何不以單引號或雙引號開頭的內容
  2. 然后有兩個開口的花括號
  3. 匹配2 =大括號內的所有內容(如果有一個或多個字符),直到不是豎線或大括號為止
  4. 然后有兩個閉合的冰壺
  5. 全局且不區分大小寫的搜索標志

並替換為

'$1<span ng-bind="$2"></span>'

希望能幫助到你!

我認為您可以使用此正則表達式:

/(^|(>[^\<]*)|(^[^\<]*))(\{\{[^\{\}]*\}\})/igm

並使用其替換$4

如果我沒錯,您想更換

>\s*\{\{([^|}<]+)\}\}

 ng-bind="\1">

請注意,替換項在前面有空間。

對於過濾器箱,您可以更換

>\s*\{\{([^|}<]+\|[^|}<]+)\}\}

 ng-bind="(\1)">

您可以嘗試多次通過方法

  1. 搜索正則表達式"(.*)\\{\\{([^\\|]+?)\\}\\}(.*)"替換為"$1[[[$2]]]$3"
  2. 搜索正則表達式\\{\\{\\s*([^\\|]+?)\\s*\\}\\}替換為<span data-bind="$1"></span>
  3. 搜索正則表達式\\[\\[\\[{{
  4. 搜索正則表達式\\]\\]\\]替換為}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM