元の文字列を残したまま置換する方法

投稿 2023年10月28日

更新 2023年10月28日

専門用語の数:

元の文字列を残したまま置換する方法

~ 目次 ~

元の文字を残したまま置換したい

やりたいこと

正規表現

正規表現の解説

便利な使い方

まとめ

元の文字を保持したまま置換したい

正規表現を使用して検索すると、任意を文字列をヒットされることができますが、

置換をすると、ヒットする文字列がすべて置換後の文字列になります。


置換前の文字を残したまま置換をしたいと。

例えば…

・特定の箇所をダブルクォーテーションで囲みたい

・特定の箇所の区切り文字を変えたい

というのを例に紹介します。

やりたいこと

2つ目をダブルクォーテーションで囲む

3つ目の文字と数字の間にアンスコを入れる

置換前

1,test_123,example1,321 2,example_1,test123,123 3,sample_12,sample1,999

置換後

1,"test_123",example_1,321 2,"example_1",test_123,123 3,"sample_12",sample_1,999

正規表現

置換前

([a-z]+_[0-9]+),([a-z]+)([0-9]+)

置換後

"$1",$2_$3

正規表現の解説

どういう仕組みで置換されているかというと、

みそなのは「$1」です。


置換前にある()の中身が$1に代入されています。


左側から()を数えて、1つ目は$1、2つ目は$2…

と順番に代入されています。

色付け

紐づけがわかりやすいように、色付けすると以下のようになります

置換前

([a-z]+_[0-9]+),([a-z]+)([0-9]+) 1,test_123,example1,321 2,example_1,test123,123 3,sample_12,sample1,999

置換後

"$1",$2_$3 1,"test_123",example_1,321 2,"example_1",test_123,123 3,"sample_12",sample_1,999

便利な使い方

個人的に使っている便利な使い方を紹介しておきます。

順番を変える

置換前

(.+),(.+),(.+),(.+) 1,test_123,example1,321 2,example_1,test123,123 3,sample_12,sample1,999

置換後

$2,$1,$4,$3 test_123,1,321,example1 example_1,2,123,test123 sample_12,3,999,sample1

複製

置換前

(.+),(.+),(.+),(.+) 1,test_123,example1,321 2,example_1,test123,123 3,sample_12,sample1,999

置換後

$1,$2,$3,$4,$1 1,test_123,example1,321,1 2,example_1,test123,123,2 3,sample_12,sample1,999,3

間に代入

置換前

(.+,.+),(.+,.+) 1,test_123,example1,321 2,example_1,test123,123 3,sample_12,sample1,999

置換後

$1,NULL,$2 1,test_123,NULL,example1,321 2,example_1,NULL,test123,123 3,sample_12,NULL,sample1,999

まとめ

最初知ったときは衝撃が走りました。

これを知ってからというもの、作業が超効率化できました。

さらに、正規表現を調べるきっかけになって、正規表現が怖くなくなりました。


正規表現検索ができて、置換機能があるツールなら大体できると思うので、

是非活用してみてください。


以上、ここまで見ていただきありがとうございます。

皆さまの快適な開発ライフに、ほんの少しでもお役に立てれば幸いです。

コメント一覧

コメントがまだありません

コメントを投稿してみる

コメント(必須※500文字以内)

お名前(必須※30文字以内)

※日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)