ヘッダー画像

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

投稿 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

まとめ

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

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

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

正規表現検索ができて、置換機能があるツールなら大体できると思うので、
是非活用してみてください。

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

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

コメント

この記事のコメントはありません。