皆さま、こんにちは。ホンヤク社の成田です。
あっという間に4月も中旬になり、気づけば再来週には大型連休が迫っています。皆さまのご予定はいかがでしょうか。
本日は、特定の文字列を指定回数分繰り返す表現についてご紹介します。前回は特定の1文字と「{n}」や「{n,m}」との組み合わせについてお話ししましたが、今回は「( )」を使用して複数の文字をひとまとまりとして繰り返す例を取り上げたいと思います。
<組み合わせ例>
(Re: ){4}
⇒ 「Re: Re: Re: Re: 」のように「Re: 」が4回繰り返す文字列がヒットします。こういったケースは半角スペースへの考慮も必要です。
([A-Z][a-z][a-z] ){6,10} ※最後の]と)の間に半角スペースがあります
⇒ 「Aaa Bbb Ccc Ddd Eee Fff 」のように、「大文字の英字」「小文字の英字」「小文字の英字」「半角スペース」の組み合わせが6回以上10回以下繰り返すケースがヒット対象となります。
([なか]んでも){2}
⇒ 「[ ]」と「( )」を組み合わせた表現です。最初の文字が「な」「か」のいずれかで、その後ろに「んでも」が続く文字列が2回繰り返されるという意味です。「なんでもかんでも」がヒットしますが、それ以外に「なんでもなんでも」「かんでもなんでも」「かんでもかんでも」もヒットします。
\d{0,3},?(\d{3},?)*\d{1,3}
⇒ 前回、0から999,999,999までをヒット対象とする表現として「\d{0,3},?\d{0,3},?\d{1,3}」を紹介しましたが、その応用版です。カンマとカンマの間に「( )」を用いて「(\d{3})*」という表現にしていますが、これは「3桁の数字と0か1つのカンマ(\d{3},?)が0個以上(( )*)」という意味ですので、ヒット対象は0から無限に続く数字(999,999,999,999,999……)ということになります。
( | )?
⇒これは趣旨がやや異なる例ですが、応用的にご紹介します。複数文字列のうちいずれかあるいはなし、という意味で、たとえば「burn(ed|t)?」とすると「burn」「burned」「burnt」の3通り、「show(ing|s|ed|n)?」とすると「show」「showing」「shows」「showed」「shown」の5通りがヒットします。
いかがでしたでしょうか? 1文字だけでなく、複数の文字をまとめた上で繰り返しの対象とすることで、検索や絞り込みのオプションがさらに広がると思います。用途に応じてぜひお試しください。
次回は、文字の種類を限定した表現についてお話しします。
