皆さま、こんにちは。ホンヤク社の成田です。
今週も東京は雨の多い一週間でした。4月になりましたが、皆さまいかがお過ごしでしょうか。
本日は、任意の長さあるいは1文字以上の数字や記号などを使用した例をご紹介いたします。前回は任意の1文字を表す「.」を使用しましたが、「\w」「\d」「\s」など文字の種類を限定することで検索や絞り込みがより便利になるケースについて紹介いたします。
<組み合わせ例>
¥w+
⇒ 「全角文字、半角カナ、半角英数字またはアンダースコアが1文字以上」を表しています。記号やスペースなどを除外して検索や絞り込みをしたい場合には「.」より「\w」を使うのがベターかと思います。なお、「c\w+t」とすると「cat」「coat」「cheat」「complaint」といった「c」と「t」の間に1文字以上の文字が入る文字列すべてがヒットします。※「c1t」「cあいうえおt」「c_t」などもヒット対象となる点にご注意ください。
\d\.\d+
⇒ 「数字1文字」「ピリオド」「数字1文字以上」という組み合わせです。これは、たとえば円周率の「3.1415926535897932384…」といった小数点以下の数字が任意で続くものを最後までまとめて検索対象(あるいは置換対象)としたい場合に使えます。
\d*,?\d*,?\d+
⇒ 「数字0文字以上」「カンマ0か1つ」「数字0文字以上」「カンマ0か1つ」「数字1文字以上」の組み合わせです。ヒット対象となるのは、1文字以上上限なしの数字(「*」や「+」に上限はないため)、つまり1桁から無限大までの数字です。ただ、カンマが上限2つまで数字の間に入ることを想定しているので、カンマ付きであれば「XXX,XXX,XXX」という9桁まで対応できることになります。なお、この組み合わせは「1234,5678,90」のようなものもヒットしてしまうため、厳密にカンマを3桁ごとの区切りにするのであれば「\d{0,3},?\d{0,3},?\d{1,3}」とすると良いかと思います(この例についてはあらためてご紹介します)。
\s\s\s* あるいは \s\s+
⇒ これらは以前にも紹介しましたが、ダブル以上の連続スペース(タブや改行が混在する場合も含む)がヒットする組み合わせです。前者の場合は3つ目の「\s」が「0回以上の繰り返し」で、後者の場合は2つ目の「¥s」が「1回以上の繰り返し」ですので、どちらもスペースが2つか、3つ以上という意味になります。
いかがでしたでしょうか? 「.」ではなく、「\w」「\d」「\s」と「*」「+」とを組み合わせることで、文字の種類を限定したより厳密な正規表現を書けますので、ぜひ参考にしてくださればと思います。
次回は、特定の文字を指定回数分繰り返す表現についてご紹介します。
