いきなり答える備忘録

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

(Gスプレッドシート)カッコ内の文字列を抽出・削除する

 Googleスプレッドシートで、文字列中のカッコに含まれる文字列を抽出または削除する方法についてです。
 ここでのカッコとは全角カッコとし、文字列を抽出・削除する例をみてみます。

  • REGEXREPLACE関数を使ってカッコ内の文字列を一括して抽出・削除することができます。

手順

サンプルデータと実行結果

 B3:B6にはすべて同じ文字列が記録されています。
 C3:C6には目的に応じてそれぞれ異なる式を入力しています。

f:id:accs2014:20190526134624p:plain:w700

 式を実行すると次のような結果になります。

f:id:accs2014:20190526134621p:plain:w700

 それぞれの式の内容については以下のとおりです。

 なお、抽出・削除の対象となるカッコは全角カッコですが、式を構成している半角カッコと紛らわしいので注意が必要です。
 フォントの再現にもよりますが、やや細く上寄りになっているのが全角カッコです。

カッコを含めて抽出する

 C3セルには次のように入力しています。

=REGEXREPLACE(B3,".*?((.*?)).*?","$1")

 カッコ(全角カッコ。以下同様)の外側に半角カッコを置いています。
 これによりカッコとその内側の文字列に「$1」という別名が与えられます(第1引数中の文字列中に該当するカッコが複数あっても一律同名)。第3引数(置換後文字列)としてその「$1」を指定することで、カッコとその内側がそのまま残ります。カッコの外側の文字(第2引数の両端の「.*?」で表されています)は置換に伴い削除されます。

カッコを除いて抽出する

 C4セルには次のように入力しています。

=REGEXREPLACE(B4,".*?((.*?)).*?","$1")

 カッコのすぐ内側に半角カッコを置いています。
 これによりカッコの内側の文字列に「$1」という別名が与えられます。第3引数(置換後文字列)としてその「$1」を指定することで、カッコの内側だけがそのまま残ります。

カッコを残して削除する

 C5セルには次のように入力しています。

=REGEXREPLACE(B5,"(.*?)","()")

 カッコとその内側の文字列を、すべてただのカッコに置き換えています。

カッコごと削除する

 C6セルには次のように入力しています。

=REGEXREPLACE(B6,"(.*?)","")

 カッコとその内側の文字列を、すべて空文字に置き換えています。