ある文字列を囲んでいる記号を別の記号に置換する

2011/02/01未分類import

ある文字列を囲んでいる記号(括弧やダブルクオーテーション)を別の記号に置換する

vim(というか正規表現)では次のように打つ.
:1467,1480s/"\(.*\)"/{\1}/g 
この例では,編集しているテキストファイルの1467から1480行の範囲にある,「""」で囲まれた文字列を「{}」(本当は半角の括弧)で囲むように置換している.
正規表現では,「\(」と「\)」に囲まれた文字列は,再利用することが出来る.
再利用する場合は,「\n」(nは1以上の自然数で,「\(」と「\)」で囲んだ順番をさす)を使う.

ある記号に囲まれた文字列に対して,その囲んでいる記号だけを変えたいことは結構あるので,これを覚えておくとルーチンワークを軽減できる.

応用例

LuaLaTeX等において,太字修飾していた文字列を,さらにサンセリフフォントに指定する例.後付けでこのような編集をすることは結構ある気がする.
:237,287s/\\textbf{\(.*\)}/\\textsf{\\textbf{\1}}/g