在 TextMate 问题中用反向引用替换

Replacing with backreference in TextMate issue

我正在使用 TextMate 将包含左括号和右括号之间字符的表达式 [my_expression] 替换为 {my_expression};所以我试着替换

\[[^]]*\]

来自

{}

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

使用捕获组(...):

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

</code> 是对包含在 <code>[...] 中的文本的反向引用。

这里是 regex demo and also Numbered Backreferences.

此外,TextMate docs:

1. Syntax elements
  (...) group

20.4.1 Captures
To reference a capture, use $n where n is the capture register number. Using [=16=] means the entire match.

还有:

  • If you want to use [, -, ] as a normal character in a character class, you should escape these characters by \.

你忘记转义了一个字符,[^]]应该是[^\]]

您还需要一个捕获组。 </code> 是 <a href="http://www.regular-expressions.info/replacebackref.html" rel="nofollow">back-referencing</a> <strong><code>1st 捕获组 ,而您没有捕获组,因此请使用以下正则表达式:

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

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

上的此页面

但是,这个 RegEx 更短:

\[(.*?)\]

也替换为{}

Live Demo on Regex101