座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

正規表現千夜一夜 第2夜 「行頭・行末の値を修正したい」

正規表現において行頭は ^、行末は $ で表すことが多いです。

例えば、コードの行末にコロンを付与したい場合、 s/$/;/。この程度なら、矩形選択 で行末まで選択した状態で、A で挿入モードにして入力することが多いかも。

逆に行末のコロンを取り除くなら、 s/;$//

行頭についても同じことが出来ますね。行頭に // をつけてコメントアウトするなら s/^/\/\//

行頭と行末、同時に処理するパターンも有用で、全行の行頭と末尾にダブルクォートをつ けたいなら、 %s/^\|$/"/g とします。

しかし、この方法だと、1文字しかない行は正しくクォーティングされません。

[実行前]
1
12
123
1234
[実行後]
"1
"12"
"123"
"1234"

%s/^.*$/"&"/ とすると、期待した加工が行えます。sedvimでは置き換えたい文字列 に & を指定すると、検索した文字列そのものが返されます。

これだと、空行に "" と挿入されてしまうので、それを避けるなら %s/^.\+$/"&"/g とします。

加工ルールにもよりますが、編集前に前後のスペース文字をトリミングしたほうがいいこ ともありますね。%s/^\s\+\|\s\+$//g

ネットで用途にあった正規表現パターンを拾ってコードに入れて、それがバグやトラブル の元になるといったことはけっこうあります。 泥臭くやるより正規表現で華麗に処理したい、よく分かりますが、 まずは自分が使っているツールで活用しながら覚えていったほうがいいです。

広告を非表示にする