我使用TextMate替換表達式[my_expression]
,其中包含開放和封閉括號之間的字符{my_expression}
;所以我想通過在TextMate問題中用反向引用替換
{$1}
正則表達式正確的表達式匹配替換
\[[^]]*\]
,但更換給人{$1}
,使變量無法識別。有人有想法嗎?
我使用TextMate替換表達式[my_expression]
,其中包含開放和封閉括號之間的字符{my_expression}
;所以我想通過在TextMate問題中用反向引用替換
{$1}
正則表達式正確的表達式匹配替換
\[[^]]*\]
,但更換給人{$1}
,使變量無法識別。有人有想法嗎?
你忘了逃跑的字符,[^]]
應該是[^\]]
。您還需要一個捕獲組。 $1
是back-referencing的1st
捕獲組,和你沒有捕捉組,所以使用正則表達式如下:
\[([^\]]*)\]
這增加了周圍[^\]]*
()
,所以[]
內捕獲數據。欲瞭解更多信息,請參閱Capture Groups
此頁然而,這正則表達式是短:
\[(.*?)\]
與{$1}
使用捕獲組(...)
:
\[([^\]]*)\]
的$1
是一個反向引用附帶[...]
文本。
這裏是regex demo和Numbered Backreferences。
此外,TextMate docs:
1的語法元素
(...)
組20.4.1捕獲
要引用的捕獲,使用$n
其中n是捕獲註冊號。使用$0
意味着整個比賽。
而且也:
- 如果你想使用
[
,-
,]
作爲一個字符類普通字符,你應該\
逃避這些字符。
而且代你忘了逃跑的字符,使用'\ [[^ \]] * \]'。您還需要一個捕獲組,所以使用'\ [([^ \]] *)\]' – Druzion
轉義']'不需要,儘管 – rock321987
您可以簡化您的正則表達式爲\ [(。*?)\]。該?在*之後使它不貪婪,因爲我[^]]對於眼睛是有點困難的......並且是的,你需要()來指定一個TextMate可以識別的捕獲組 – karina