皆さま、こんにちは。ホンヤク社の成田です。
暑かったり寒かったりの一週間でした。皆さまいかがお過ごしでしょうか。
今回からは、正規表現を組み合わせたさまざまな使用例をご紹介していきたいと思います。これまでに触れてきた「.」「?」「[a-z]」「{3,5}」などを要素的に考えて組み合わせることで、翻訳の現場で活用できる検索や置換のサンプルやヒントをお届けできればと思っております。
本日は、「\d」「[ ]」「{n}」「( | )」などを組み合わせた日付の表現をご紹介します。
<組み合わせ例>
\d{2,4}/\d{1,2}/\d{1,2}
⇒ 以前にお話しした通り、「\d\d\d\d/\d\d/\d\d」とすれば「1972/02/20」「2017/12/31」のような文字列がヒットしますが、「1972/2/20」「17/12/31」のようなケースはヒットしません。それらを網羅的にヒットさせるために、年の部分を「\d{2,4}」(数字が2~4桁)、月と日の部分を「\d{1,2}」(数字が1~2桁)としています。
\d{2,4}[/-]\d{1,2}[/-]\d{1,2}
⇒ 年月日の区切り目にスラッシュとハイフンの両方を想定する場合、「[/-]」と書くことでどちらか一方を表すことができます。スペースやドットやアンダースコアなど他の記号が使われている場合は「[ ]」内に追記すれば良いです。
\w\w\w\.?\s\d{1,2},?\s(‘\d\d|\d\d\d\d)
⇒ 以前に「Feb. 13」「Aug. 25」のような「全角文字、半角カナ、半角英数字またはアンダースコア1文字3つ」と「.」と「数字2桁」の組み合わせを表す「¥w¥w¥w¥.¥s¥d¥d」を紹介しましたが、それの応用版です。今回のものは「全角文字、半角カナ、半角英数字またはアンダースコア1文字3つ」と「ドットが0か1つ」と「数字1~2桁」と「カンマが0か1つ」と「アポストロフィと数字2桁、あるいは数字4桁のいずれか」を表しますので、「Jan 1, ‘01」「Feb 13, 1997」「Aug. 25 ‘13」などといったさまざまな表記ゆれに対応することができます。
(明治|大正|昭和|平成|令和|\d\d)(元|[\d]{1,2})年
⇒ 「明治」「大正」「昭和」「平成」「令和」のうちいずれかと「元年または1~2桁の数字と年」とを組み合わせたものに、さらに西暦も含めて対応できるように元号の選択肢に「\d\d」も追記しています。これで「明治9年」「令和元年」「1984年」「平成29年」などをまとめて検索できますが、「20元年」「4002年」なども誤ったヒット対象となってしまう点にご注意ください。
いかがでしたでしょうか? これまでにご紹介した正規表現を組み合わせてさまざまな日付の表現に対応できることがおわかりいただけたら幸いです。このようにして、次回からも組み合わせ例をご紹介したいと思います。
次回からは、これまでに紹介した正規表現を組み合わせた使用例についてお話しします。
