正規表現と文字列置換を組み合わせる:「$1」を使った便利なテクニック|データ分析用語を解説

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

置換前の文字列を置換後の文字列に引用したい

前回と今回で「正規表現」について解説しています。前回は正規表現の紹介と簡単な使い方を紹介させていただきました。今回は知っておくとすごく便利な「正規表現を用いた文字列の置換テクニック」を紹介させてください。

カッコ()を使って対象を変数に格納、$1,$2…を使って変数から値を取得

今回もテキストエディタとして「サクラエディタ」を利用します。CSVデータも前回と同じものを例として使用します。そして今日の置換実践例は以下の通りです。

「電話番号のデータに対して、先頭0を削除して、代わりに日本の国番号「+81-」を付加したい」

img20150929_1どうでしょうか?パっと見は「0」を「+81-」に置換すればよいように感じますがコトはそれほど単純ではありません。置換対象は「電話番号のデータ」だけなのです。
実はこの場合は0を置換するのではなくて、
検索してマッチした文字列」を「+81-」と「検索してマッチした文字列から先頭0を削除した文字列」とを連結した文字列で置換する。
というプロセスが必要になるのです。以下に実践例を見てみましょう。

[メニュー]から[置換]を選択します。img20150929_5

いかがでしょうか?電話番号の部分だけが置換されているのがお分かりいただけると思います。img20150929_7

ここで上記の置換操作に関するポイントを説明します。置換前の条件で指定したカッコ()、これも正規表現のメタ文字です。これは「カッコ()で囲われた部分を変数に代入する」というはたらきをもっているのです。そして置換後の条件で指定した$1が代入された値を保持している変数なのです。置換後の条件を変数として可変にすることで正規表現を組み合わせた動的な置換操作を可能にしているのです。
ちなみにこの変数は$1,$2,$3…と複数用いることが可能です。それはすなわち正規表現で指定したカッコ()を複数用いる事が可能であることを意味します。正規表現内で最初に出現したカッコの値が$1に代入され、次に出現したカッコの値が$2に代入されることによって複数の変数を置換操作で制御する事が可能になるのです。

【前回】データの中からパターンに一致する文字を見つける手法

データ分析用語:索引

SERVICE