Sublime Text:复杂的正则表达式 - 搜索和替换

时间:2015-08-03 18:54:49

标签: regex sublimetext

我想做一个快速测试,看看<span ng-bind="test.id"></span>是否比使用{{test.id}}进行数据绑定更好。有没有办法在整个应用程序的正则表达式中做到这一点?

我必须确保它不会替换<div id="chat-{{otherPerson.id}}" ...>之类的标记内的变量,因此它只会替换<div class="message">{{message.body}}</div>之类的内容。

我还需要能够检查是否使用了过滤器:{{ otherPerson | fullname}}

这是否可以使用正则表达式,或者我是否需要编写一个繁琐的任务来处理它?<​​/ p>

4 个答案:

答案 0 :(得分:1)

我相信你应该可以使用这种类型的正则表达式

/([^'"])\{\{([^\}|]+)\}\}/gi
  1. 匹配1 =任何不以单引号或双引号开头的内容
  2. 然后有两个开放的花括号
  3. 匹配2 =任何东西(如果它有一个或多个字符)在那些支撑内,直到那不是管道或近大括号
  4. 然后有两个结束曲线
  5. 全局和不区分大小写的搜索标记
  6. 并替换为

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

    希望它有所帮助!

答案 1 :(得分:0)

我认为你可以使用这个正则表达式:

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

并使用其替换$4

答案 2 :(得分:0)

如果我找对你,你想要替换

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

 ng-bind="\1">

请注意,替换位置前面有空格。

对于过滤器案例,您可以替换

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

 ng-bind="(\1)">

答案 3 :(得分:0)

您可以尝试多次通过方法

  1. 搜索正则表达式"(.*)\{\{([^\|]+?)\}\}(.*)"替换为"$1[[[$2]]]$3"
  2. 搜索正则表达式\{\{\s*([^\|]+?)\s*\}\}将其替换为<span data-bind="$1"></span>
  3. 搜索正则表达式\[\[\[替换为{{
  4. 搜索正则表达式\]\]\]替换为}}