LibreOffice Calcで、IPアドレスのゼロ埋め(ゼロパディング)と余分なゼロの削除(ゼロサプレス)をする方法についてです。
- REGEX関数を使ってIPアドレスのゼロ埋めと余分なゼロの削除をすることができます。
手順
ゼロ埋めをする例
画像では、B列にIPアドレスを表す文字列が記録されています。
これに対しC3セルに次のような式を入力して下方にコピーし、ゼロ埋めした結果を得ています。
C3セル
=REGEX(REGEX(B3,"(^|\.)","$100","g"),"0(?=[0-9]{3})","","g")
(バックスラッシュは¥です。正規表現におけるエスケープ用の記号です)
ちょっと筋が悪い感じですがREGEX関数による置換を2回行っています。
1回目(内側のREGEX)は「文字列の先頭と『.』の記号」をグループ化して「$1」の番号を与え、それらの後に「00」を加えています(なので置換後文字列が「$100」となります)。
2回目(外側のREGEX)は「直後に数字が3つ(以上)続くような0」を空文字に置き換えています。肯定先読み(?=)を使用しています。
これらによりそれぞれの数字が3桁にゼロ埋めされます。
余分なゼロを削除する例
こちらでは、B列にゼロ埋めされたIPアドレスを表す文字列が記録されています。
これに対しC3セルに次のような式を入力して下方にコピーし、余分なゼロを除いた結果を得ています。
C3セル
=REGEX(B3,"(?<=^|\.)0{1,2}","","g")
(バックスラッシュは¥です。正規表現におけるエスケープ用の記号です)
こちらは比較的簡単で、「文字列の先頭や『.』の後に続く『0』と『00』」を空文字に置き換えています。肯定後読み(?<=)を使用しています。