皆さま、こんにちは。ホンヤク社の成田です。
今週は暑かったり寒かったりの1週間でした。皆さまはいかがお過ごしでしょうか。
今回は、前回お話しした最短一致の具体的な例についてご紹介したいと思います。「*?」や「+?」などを使った最短一致の例で、翻訳やチェックの作業にご活用くだされば幸いです。
<例>
<tag>.*?</tag>
⇒ 開始タグから終了タグまでの最短一致がヒットします。実際に使用するときには、「tag」の部分にタグの実名を入れてください。「*」ですので、タグ間のテキストがないケースもタグ部分だけヒットします。
\w+県\w+?市
⇒ 「●●県●●市」のようなテキストをヒットさせたい際に「\w+県\w+市」という正規表現を使うことができますが、もし検索される文字列が「福井県福井市今市町」や「愛知県豊田市市木町」などだと、最長一致では「福井県福井市今市」「愛知県豊田市市」がヒットしてしまいます。これを解決するために、「市」の前に「?」を入れて最短一致と利用すると良いでしょう。
c\w+?t
⇒ 以前にご紹介した「c\w+t」で、「cat」「coat」「cheat」「complaint」といった「c」と「t」の間に1文字以上の文字が入る文字列すべてがヒットします、と説明しましたが、この正規表現では最長一致になるため、たとえば「cat模様のcoat」という文字列の場合は全部が一度にヒットしてしまいます。「cat」「coat」を別々にヒットさせたい場合は最短一致を利用すると良いでしょう。
??
⇒ 「直前文字の0回か1回の出現」を表す「?」にも最短一致を適用させることが可能です。実際に使うイメージが湧きにくい表現ですが、たとえば「.??a」とすると、「a」の前に「a」がある場合は「a」のみが単独でヒットし、「a」の前に「a」以外の文字がある場合は直前の文字と「a」の2文字がヒットする、ということになります。
いかがでしたでしょうか? 最短一致の具体的な例をご覧になることで、活用方法についておわかりいただけたら幸いです。
次回は、もう少しだけ最短一致の例をご紹介します。
