在TextMate问题中替换反向引用

时间:2016-04-18 16:53:38

标签: regex textmate

我正在使用TextMate来替换由[my_expression]开放括号和闭括号之间的字符组成的表达式{my_expression};所以我试着替换

\[[^]]*\]

通过

{$1}

正则表达式匹配正确的表达式,但替换为{$1},因此无法识别变量。有人有想法吗?

2 个答案:

答案 0 :(得分:2)

您忘了逃避角色,[^]]应为[^\]]

您还需要一个捕获组。 $1 back-referencing 1st捕获群组,并且您没有捕获组,因此请使用以下正则表达式:

\[([^\]]*)\]

这会在()周围添加[^\]]*,因此会捕获[]内的数据。有关详情,请参阅Capture Groups

上的此页面

但是,这个RegEx更短:

\[(.*?)\]

也用{$1}

代替

Live Demo on Regex101

答案 1 :(得分:1)

使用捕获组(...)

\[([^\]]*)\]

$1[...]附带的文字的反向引用。

以下是regex demoNumbered Backreferences

此外,TextMate docs

  

<强> 1。语法元素   
(...)

     

20.4.1捕获   
  要引用捕获,请使用$n,其中n是捕获寄存器编号。使用$0表示整场比赛。

还有:

  
      
  • 如果您想使用[-]作为字符类中的普通字符,则应通过\转义这些字符。
  •