我正在使用TextMate来替换由[my_expression]
开放括号和闭括号之间的字符组成的表达式{my_expression}
;所以我试着替换
\[[^]]*\]
通过
{$1}
正则表达式匹配正确的表达式,但替换为{$1}
,因此无法识别变量。有人有想法吗?
答案 0 :(得分:2)
您忘了逃避角色,[^]]
应为[^\]]
。
您还需要一个捕获组。 $1
back-referencing是 1st
捕获群组,并且您没有捕获组,因此请使用以下正则表达式:
\[([^\]]*)\]
这会在()
周围添加[^\]]*
,因此会捕获[]
内的数据。有关详情,请参阅Capture Groups
但是,这个RegEx更短:
\[(.*?)\]
也用{$1}
答案 1 :(得分:1)
使用捕获组(...)
:
\[([^\]]*)\]
$1
是[...]
附带的文字的反向引用。
以下是regex demo和Numbered Backreferences。
此外,TextMate docs:
<强> 1。语法元素
(...)
组20.4.1捕获
要引用捕获,请使用$n
,其中n是捕获寄存器编号。使用$0
表示整场比赛。
还有:
- 如果您想使用
[
,-
,]
作为字符类中的普通字符,则应通过\
转义这些字符。