正規表現で漢数字のマッチをUnicode文字クラスで一発で表現できないかと試行錯誤したことがありました。 普通っぽい漢数字: 〇一二三四五六七八九十百千万億兆京 マニアックな漢数字: 零〇壱一弐二参三肆四伍五陸六漆七捌八玖九拾十陌百阡千萬万億兆京 でも結局、ユースケースに応じて文字セット[]でべた書きプラスアルファするよりないというのが私なりの結論です。 日本の元号の漢数字にマッチさせる 例: 日本の元号(明治以降)の漢数字にマッチ: /(?<=明治|大正|昭和|平成)[二三四五六七八]?[一十]?[元一二三四五六七八九十〇](?=年)/(regex101) ご覧のとおり、「平成元年」だの「平成一〇年」「平成三〇年」というパターンにも対応しています。 一見冗長に見えるかと思いますが、一応以下のように文字セット[]を桁ごとに分けて精度を高め、かつメンテしやすくしているのがポイントです。 [二
![正規表現: 元号の漢数字「〇一二三四五六七八九十」にマッチさせる|TechRacho by BPS株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/5769aa3f4d8c18228001d631163af8c8f901914b/height=288;version=1;width=512/https%3A%2F%2Ftechracho.bpsinc.jp%2Fwp-content%2Fuploads%2F2019%2F02%2Fregexp_unicode_han_nums_eyecatch.png)