正規表現「{n}」(直前文字のn回繰り返し)編(その1)

原文ファイルのトリセツ

皆さま、こんにちは。ホンヤク社の成田です。
だんだんと冬本番の天候になってきましたが、皆さまはいかがお過ごしでしょうか。

 

今回は「{ }」と数字の組み合わせの正規表現についてお話しします。MS Wordワイルドカードと同じ表記方法で、文字を繰り返す数(あるいは範囲)を指定した検索が可能です。

 

{n} ※「n」は任意の数字を表します
「直前文字をn回繰り返す」を表す正規表現です。「n」に実際に数字を入力して数を指定してください。

 

このようにだけ説明すると、どういう場面に使えるのか分かりづらいかもしれません。なので、実例をいくらか挙げたいと思います。

 

<使用例>
cho{2}se
⇒ 「o」を2回繰り返す、という意味のため、「choose」がヒットします。「chose」や「chooose」などはヒットしません。

 

cho{2,}se
⇒ ワイルドカードと同様に、数字の右に「,」をつけると「その数字以上」を表す正規表現になります。この例は「o」を2回以上繰り返す、という意味のため、「choose」や「chooose」などはヒットしますが「chose」はヒットしません。
ちなみに、「cho{1,}se」とすると「cho+se」と同じ意味になります。

 

半角スペース{2,} ※「{」の前に半角スペースを1つ入力するという意味です
⇒ 半角スペースを2回以上繰り返す、という意味のため、ダブルスペースやトリプル以上のスペースがヒットします。シングルスペースはヒットしません。誤ってスペースを2つ以上連続で入力していないかをチェックするのに使用できます。

ここで説明ですが、上記の「半角スペース{2,}」はワイルドカードと同様に検索条件に合致する最長のテキストを優先的に検出するため、置換後の文字列をシングルスペースにして一括置換すれば、ダブル以上のスペースをまとめて自動的にシングルスペースに置き換えられます。
そうすると、ワイルドカードの「@」のような最短のテキストを優先して検出するような正規表現はないのか、気になる方もいらっしゃるのではと思います。正規表現ではそのための別の方法が用意されているので、またあらためてご紹介したいと思います。

 

いかがでしたでしょうか? この「{ }」と数字の組み合わせはワイルドカードと同じ書き方のため、わかりやすいのではと思います。

 

次回は、「{ }」と数字の組み合わせについてもう少しお話しします。