検索・置換を爆速化させる正規表現 Part 2
正規表現の使用例1
名前の表記が 姓 – 名 の順になっていたとします。これを一回で逆にしてみます。
Lennon John McCartney Paul Harrison George Starr Ringo | → | John Lennon Paul McCartney George Harrison Ringo Starr |
例のように4行くらいならカット&ペーストで編集した方が早いと思いますが、これが1000行とかあったら悪夢ですよね...
置換に使用する正規表現の例
検索する文字:(.+)\s(.+)
置換後の文字:$2␣$1
この検索の正規表現を分解すると、
....任意の一文字(なんでもいいので一文字)にマッチ
+...直前の文字の1個以上繰り返しにマッチ
\s...スペースにマッチ
になります。
つまり(.+)\s(.+)は、
(一文字以上の文字列)スペース(一文字以上の文字列)
という意味になります。
ここで使っているカッコはマッチした文字列をキャプチャーするためのものです。単に検索するだけであればカッコは必要ありませんが、この例では置換で再利用する文字列を覚えさせるためにカッコでくくっています。
具体的に言うと、左側(1番目)でマッチした文字が変数$1に代入され、右側(2番目)でマッチした文字が変数$2に代入されます。
(「変数」は文字や数字などの「入れ物」と思ってください)
つまり、これは正規表現 (.+)\s(.+) で検索してマッチした文字を $2␣$1 で前後を逆にして置き換えるという作業になります。
「 ␣ 」の記号はスペースを入れているという意味合いで記載してありますので、実際には$2と$1の間は空白になります。
テキストエディターで置換を実行する
正規表現が使えるテキストエディターならなんでもいいのですが、今回はマイクロソフトのVisual Studio Codeを使っています。
VS Codeは置換後のプレビューが表示されるので便利です。インストール方法などはこちら。
左の検索アイコンをクリック。
置換のテキストボックスが表示されない場合は左の▲をクリック。
検索と置換の欄に入力します。
「正規表現を使用する」ボタンをクリック。
「すべて置換」をクリック。
置換後。
他のテキストエディターでも操作は同じです。
正規表現の使用例2
次に、名前の表記が 姓 名 - 姓 名 の順になっていたとします。これも一回で逆にしてみます。
Lennon John – McCartney Paul | → | John Lennon – Paul McCartney |
検索する文字:(.+)\s(.+)\s-\s(.+)\s(.+)
置換後の文字:$2 $1 – $4 $3
正規表現で検索します。
置換後。
ディスカッション
コメント一覧
まだ、コメントがありません