皆さま、こんにちは。ホンヤク社の成田です。
台風やら線状降水帯やら、大変な天気の一週間でした。皆さまのまわりは大丈夫でしたでしょうか。
今回は、「( )」というワイルドカードをご紹介します。
( )
検索対象をグループ化するワイルドカードです。グループ化の目的は主に置換で、検索対象の文字あるいはひとまとまりの文字列を置換後にも反映したいときにこのワイルドカードが使えます。置換するときには、置換後の文字列に「\」と数字の組み合わせ(「\1」「\2」「\3」……)を入力します。数字は、検索する文字列に用いる「( )」の出現順に沿って入力してください。
説明文よりも、実例を見たほうがわかりやすいかと思います。[検索と置換] ダイアログボックスを表示し、[検索する文字列] と [置換後の文字列] に下記使用例のように入力すると、さまざまな種類の置換ができます。
<使用例>
・「Mr. Tanaka」「Mr. Johnson」「Mr. Chen」などのMr.+人名をまとめて「Tanaka-san」「Johnson-san」「Chen-san」に変換したい
検索する文字列:Mr. ([a-zA-Z]@>)
置換する文字列:\1-san
⇒検索する文字列の人名部分を「[a-zA-Z]@>」(1文字以上の英字の単語末尾まで)として表記し、それを「( )」で括ります。置換後の文字列に「\1」として人名部分をそのまま反映し、後ろに「-san」とつければ上記のような置換が可能です。
・「Honyaku Taro」「Honyaku Hanako」のようなローマ字表記の人名をまとめて「Taro Honyaku」「Hanako Honyaku」に変換したい
検索する文字列:(<[A-Za-z]@) ([A-Za-z]@>)
置換する文字列:\2 \1 ※「\2」と「\1」の間には半角スペースが入っています。
⇒ローマ字表記の人名を「<[A-Za-z]@ [A-Za-z]@>」というように表し、最初のまとまりと最後のまとまりにそれぞれ「( )」をつけ、置換後には順序を逆にすることで上記のような置換が可能です。ただし、このやり方では人名以外の連続する2単語も置換対象となりますのでご注意ください。
・「20170415」「20160320」「20150207」のような複数の文字列をまとめて「15-04-2017」「20-03-2016」「07-02-2015」に変換したい
検索する文字列:([0-9]{4})([0-9]{2})([0-9]{2})
置換する文字列:\3-\2-\1
⇒「( )」の出現順として、年の部分(最初の4桁)が1番目、月(次の2桁)が2番目、日(最後の2桁)が3番目なので、置換後は逆にして、さらに間にハイフンを入力することで上記のような置換が可能です。
・「[ABC]」「[123]」など、「[ ]」で括られているテキストを「ABC」「123」のように「[ ]」をまとめて外す形に置換したい
検索する文字列:\[(*)\]
置換する文字列:\1
⇒「[ ]」で括られている中身「*」のみを「( )」の対象として「\1」で置換することで、結果として「[ ]」を外すことが可能です。なお、「[」と「]」はエスケープを忘れないでください。
いかがでしたでしょうか? 「( )」の機能と、これを用いた置換方法についておわかりいただけたら幸いです。次回からは、この「( )」や他のワイルドカードを組み合わせたさまざまな置換方法についてご紹介いたします。