いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(LibreOffice Calc)IPアドレスのゼロ埋め/削除

 LibreOffice Calcで、IPアドレスのゼロ埋め(ゼロパディング)と余分なゼロの削除(ゼロサプレス)をする方法についてです。

  • REGEX関数を使ってIPアドレスのゼロ埋めと余分なゼロの削除をすることができます。

手順

ゼロ埋めをする例

f:id:accs2014:20210207160246p:plain:right:w550

 画像では、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桁にゼロ埋めされます。

余分なゼロを削除する例

f:id:accs2014:20210207160251p:plain:right:w500

 こちらでは、B列にゼロ埋めされたIPアドレスを表す文字列が記録されています。
 これに対しC3セルに次のような式を入力して下方にコピーし、余分なゼロを除いた結果を得ています。 

 C3セル

=REGEX(B3,"(?<=^|\.)0{1,2}","","g")

(バックスラッシュは¥です。正規表現におけるエスケープ用の記号です)

 こちらは比較的簡単で、「文字列の先頭や『.』の後に続く『0』と『00』」を空文字に置き換えています。肯定後読み(?<=)を使用しています。