正規表現で数字を0埋めする方法

正規表現

目次

辞書順ソート

以下に数字があります。

1
2
3
4
5
6
7
8
9
10
11
12

人間が見た場合、数字の小さいものから順番に並んでいるのですが、これをコンピュータが並べ替えた場合、以下のようになる場合があります。

1
10
11
12
2
3
4
5
6
7
8
9

これは辞書順ソートと言って、コンピュータは各行の先頭の文字を見て並べ替えの順序を決定しています。

1の先頭文字は「1」、2の先頭文字は「2」ですが、10の先頭文字は「1」のため、10の方が2よりも早く序列されてしまいます。

数字が辞書順ソートされてしまう場合の解決方法

数字が辞書順ソートされてしまう場合、最も簡単な解決策が数字の0埋めという方法です。

最初の数字を以下のように変換します。

01
02
03
04
05
06
07
08
09
10
11
12

このように変換した場合、1の先頭文字は「0」、2の先頭文字は、「0」、10の先頭文字は「1」になるため、辞書順ソートされた場合でも数字の順序でデータが並ぶようになります。

1ケタの数字を2ケタにゼロ埋めする正規表現

1ケタの数字を2ケタにゼロ埋めするための正規表現は以下の通りです。

置換前

^(\d)$

置換後

0$1

この条件で正規表現置換を行うと以下のようになります。

解説

置換前の「^\d$」は1ケタの数字という意味になります。
それぞれの意味は以下の通りです。

「^」……行頭
「\d」……数字
「$」……行末

そして数字部分を「()」で加工ことによりキャプチャします。キャプチャした値は置換後に使用します。⇒キャプチャについて

\dは1ケタの数字のみを表すため、2ケタの数字に対しては置換対象になりません。

置換後は「0$1」となっておりますが、これは以下の意味です。
「0」……そのまま「0」
「$1」……置換前にキャプチャした文字

そして、今回キャプチャしたのは「1ケタの数字」になります。

つまり、この置換後は「0」+1ケタの数字という意味になります。

(応用)1ケタを3ケタに0埋めする方法

今回は1ケタを2ケタにする方法でしたが、1ケタを3ケタにする場合は以下のようになります。

置換前

^(\d)$

置換後

00$1

(応用)2ケタを3ケタに0埋めする方法

そして、2ケタの数字を3ケタに0埋めする方法は以下の通りです。

置換前

^(\d{2})$

置換後

0$1

「\d」は1ケタの数字を表す正規表現ですが、直後に「{2}」を付けることで、2ケタの数字という意味になります。

まとめ

今回は数字を0埋めする方法についてお伝えしました。

1ケタ⇒2ケタ、1ケタ⇒3ケタなど、桁数が固定された置換は可能なのですが、全ての数字を同時に3ケタにする方法はありません。

ワンタッチで置換したい場合は、サクラエディタのマクロを使用して、正規表現置換を連続で実行する等の方法で行うしかありません。

またはshellやPythonなどのプログラムを組んで置換するのも考慮した方がいいと思います。

今回は0埋めする方法についてお伝えしましたが、逆に0埋めされた数字を0埋めなしに戻す方法はこちらに記載しています。

みなさんもぜひ、いろいろ試してみてください。

正規表現についての別記事についてもご覧ください!

★検索
パスワードの正規表現の考え方
「~を含まない行」を検索する方法
「~を含む行」を検索する方法
「~で終わる」を検索する方法
「~で始まる」を検索する方法
正規表現繰り返しの考え方

最短一致検索を行う方法
否定の文字クラス
「または」検索を行う方法

環境による「\d」の動作の違いについて検証

★置換
正規表現置換の考え方
大文字⇔小文字変換を行う方法
キャメルケース⇔スネークケース変換を行う方法
CSVを囲みなし⇒囲みありに変換する方法

CSVファイルの特定のカンマ以降を削除する方法
CSVファイルの必要な箇所だけ残す方法
数字3ケタおきにカンマを挿入する方法
正規表現置換で不要な行を削除し、必要な行だけ残す方法
数字を0埋めする方法
0埋めされた数字を0埋めなしに変換する方法
ファイル名から、拡張子のみを抽出する方法
Javaで正規表現置換を行う方法

また、Udemyという動画教育プラットフォームで動画解説を行っております。
動きを確認しながら丁寧に学習したいという方は、ぜひご覧ください!

正規表現入門 作業効率アップに役立つ38個の方法

コメント

タイトルとURLをコピーしました