正規表現「*」(直前文字の0回以上繰り返し)編

原文ファイルのトリセツ

皆さま、こんにちは。ホンヤク社の成田です。
いよいよ来週から12月です。一気に年末モードになりそうですが、皆さまはいかがお過ごしでしょうか。

 

今回は「+」という正規表現を取り扱います。Trados上では、直前文字の1回以上繰り返しとして使える正規表現です。MS Wordワイルドカードの「@」と同様の機能を持ちます。

 

+
「直前文字の1回以上繰り返し」を表す正規表現です。より詳細には、「+」の1つ前の文字が1回あるか、あるいは2回以上繰り返されているケースが当てはまります。個人的な覚え方としては、プラスの記号が使われているため、前回の「*」の「0回以上」よりも1つ増えた「1回以上」がヒットする、と考えると区別がつきやすいかなと思っています。

 

「*」と今回の「+」の比較について例を挙げると、前回も使用例でご紹介した「colou*r」は「color」「colour」の両方を一度に検索できますが、「colou+r」とすると、「colour」のみがヒットしてしまいます。※「colouur」というようなスペルミスのケースもヒットします。そのほかにも、前回用いた例と比較をしつつ「+」の使用例を挙げたいと思います。

 

<使用例>
10+
⇒ 「10」「100」「10000」「10000000000000」など、「1」の後ろに「0」が1回以上繰り返されている文字列がヒットします。「10*」では「1」もヒットしますが、「10+」ではヒットしません。

 

\s\s+
⇒ これは、先日「*」でご紹介した「\s\s\s*」と同じ意味を持つ正規表現で、ダブル以上の連続スペース(タブや改行が混在する場合も含む)がヒットします。2つ目の「\s」が「1回以上の繰り返し」の対象になりますので、スペースが2つか、3つ以上という意味になります。

 

.+、\w+、\d+など
⇒これまでにご紹介した正規表現文字と組み合わせた使用例です。それぞれ、「任意の文字が1文字以上」「全角文字、半角カナ、半角英数字またはアンダースコアが1文字以上」「全角・半角数字が1文字以上」という意味です。使われる場面として、たとえば( )の中に禁止されている文字が入っていないかだとか、特定の箇所に特定の文字がきちんと入力されているかなどのチェックで役立ちます。

 

最後に、「+」とMS Wordワイルドカードの「@」との違いの1つとして、「@」は検索条件に合致する最短の文字列を優先的に検出しますが、「+」は最長の文字列を優先的に検出します。特に置換を行うときなどはこの特徴を意識する必要があるかと思います。

 

いかがでしたでしょうか? 「*」との違い、ほかの正規表現文字との組み合わせ、ワイルドカードの「@」との違いなど、やや複雑な話もしましたが、さまざまな使用例を見ることで「+」の活用の参考になれば嬉しいです。

 

次回は、「直前文字が0回か1回出現」を表す「?」についてお話しします。