2016-04-18 29 views
-1

TextMateを使用して、式[my_expression]を空白文字と閉じ括弧の間の文字で置き換えます({my_expression})。私はTextMateでの逆参照で置き換える問題

{$1} 

正規表現が正しい表現にマッチすることにより、

\[[^]]*\] 

を交換しようとしましたが、変数が認識されないように、交換は、{$1}を与えます。誰かがアイデアを持っていますか? $1[...]で囲まれたテキストに後方参照である

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

+0

で置き換え

\[(.*?)\] 

'\ [[^ \]] * \]'を使ってください。 – Druzion

+0

エスケープする]]は必要ありません – rock321987

+0

あなたは正規表現を\ [(。*?)\]に単純化することができます。また、キャプチャグループも必要です。 ? * [^]]はちょっと難しいので、*は貪欲ではないです...そして、はい、TextMateが認識できるキャプチャグループを指定する必要があります – karina

答えて

2

あなたは[^]][^\]]する必要があり、文字をエスケープするのを忘れました。

また、キャプチャグループも必要です。 $11stグループをキャプチャし、あなたは何のキャプチャグループがなかったので、以下の正規表現を使用しback-referencingです:

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

これは[^\]]*周り()が追加されますので、[]内部のデータが取り込まれます。詳細情報については、Capture Groups


にこのページを参照してくださいしかし、この正規表現は短いです:また、あなたは文字をエスケープするのを忘れ{$1}

Live Demo on Regex101

1

は、キャプチャグループ(...)を使用してください。

ここではregex demoとなります。また、Numbered Backreferencesです。

また、TextMate docs

1シンタックス要素
    (...)

20.4.1キャプチャ
Nであり$nを使用し、キャプチャを参照しますキャプチャ登録番号$0を使用すると、マッチ全体を意味します。

も:

  • あなたは文字クラスで通常の文字として[-]を使用する場合は、\することにより、これらの文字をエスケープする必要があります。
関連する問題