質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

451閲覧

正規表現でデータ後部の都道府県名・市区町村名のみ取り除きたい

yoichi0702

総合スコア19

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2023/10/23 09:07

編集2023/10/23 21:31

実現したいこと

Googleスプレッドシートの正規表現にて、データの都道府県名より後ろの文字列を削除したいのですが、
いい線まで行ったのですが、最後の仕上げで苦戦しています。

※実際のデータは、クレジットカードの明細なのですが、使用しているAMEXカードだけ、
都道府県名、市区町村名が入り、これを除外したいです。

GARB Tokyo 東京都 千代田区 GARB JR東日本 えきねっと 東京都 渋谷区 JR東日本 スターバックスカフェ ◯◯店 東京都 港区 ココナラ 東京都 渋谷区 チャットワーク -大阪府 大阪市 チャットワーク -東京都 港区 チャットワーク -東京都 港区 チャットワーク -東京都 港区 **ADOBE ADOBE SYSTEMS **帝都自動車交通株式会社

該当のソースコード

=REGEXEXTRACT(A1, "^(.+?)(?: .+?[都道府県].*)?$")

試したこと

4時間ぐらい粘って、上記のところまで達したのですが、

一般化すると、下記のようなデータ

XXX X 京都府 京都市 XXX XX 京都府 京都市 XXX XXX 京都府 京都市 **XXX X **XXX XX **XXX XXX

を抽出して、
下記

XXX X XXX XX XXX XXX **XXX X **XXX XX **XXX XXX

のようにしたいのですが、
下記

XXX XXX XXX **XXX X **XXX XX **XXX XXX

のようになってしまいます。

うまく行かない部分として

GARB Tokyo 東京都 千代田区 GARB JR東日本 えきねっと 東京都 渋谷区 JR東日本 スターバックスカフェ ◯◯店 東京都 港区

のようななデータを

GARB Tokyo JR東日本 えきねっと スターバックスカフェ ◯◯店

のようにしたいのですが、

GARB JR東日本 スターバックスカフェ

と、途中が消えてしまい、都道府県名・市区町村名以外も削除されてしまいます。

どうすれば抽出できるか正規表現を助けていただきたいです。

なお、都道府県名の前にあることがある「-」は、
あとから削除しようと思っていましたが、最終的には削除したいです。

何卒よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoichi0702

2023/10/23 21:30

サンプルデータに過不足があったため、追加させていただきました。 先頭に ** を付けた行です。
guest

回答2

0

ベストアンサー

=REGEXREPLACE(REGEXEXTRACT($A1, "^(.+?)(?:東京都|北海道|大阪府|京都府|[\S]{2,3}県)"), "[ \s]+$", "")

県名の文字列の正確性については実用性に応じて修正してください。

変換前変換後
XXX X 京都府 京都市XXX X
XXX XX 京都府 京都市XXX XX
XXX XXX 京都府 京都市XXX XXX
GARB Tokyo 東京都 千代田区 GARBGARB Tokyo
JR東日本 えきねっと 東京都 渋谷区 JR東日本JR東日本 えきねっと
スターバックスカフェ ◯◯店 東京都 港区スターバックスカフェ ◯◯店
ココナラ 東京都 渋谷区ココナラ
チャットワーク -大阪府 大阪市チャットワーク -
チャットワーク -東京都 港区チャットワーク -
GARB Tokyo 東京都 千代田区 GARBGARB Tokyo
JR東日本 えきねっと 東京都 渋谷区 JR東日本JR東日本 えきねっと
スターバックスカフェ ◯◯店 東京都 港区スターバックスカフェ ◯◯店
aaaaa 東京都港区芝公園4丁目2-8aaaaa
bbbbb 栃木県宇都宮市旭1丁目1-5bbbbb
ccccc 東京都府中市日吉町1−1ccccc
ddddd 岐阜県山県市高木1000-1ddddd

投稿2023/10/23 10:20

arcxor

総合スコア2857

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoichi0702

2023/10/23 23:31

ご回答、誠にありがとうございます! 質問のため、都道府県名が入っているデータのみ抽出してしまったのですが、不適切でした。 不規則なのですが、都道府県名・市区町村名が入っている行もあれば、入っていない行もあります。 先頭に ** を付けたのですが、追加のサンプルデータも追記させていただきました。 いただいた回答を参考に、下記でできました!そもそもいただいた回答のようにREGEXREPLACEを使うべきでしたね!とても助かりました!ありがとうございます!! =REGEXREPLACE($A1, "(東京都|北海道|大阪府|京都府|[\S]{2,3}県).*$", "")
ikedas

2023/10/24 02:34 編集

誤処理を防ぐために全ての都道府県のパターンを明示したほうがいいのではないでしょうか。「岐阜市県町」のようなものはありますので。
yoichi0702

2023/10/24 23:02 編集

ありがとうございます!! そういう地域があるのですね! テスト&チェックしてみます!!
guest

0

いろいろ苦戦しましたが、最終的に、下記で表題の件は解決できました。
店舗名を消したい、という次の段階があるのですが、なかなかうまく行かないので、一旦ここでcloseとさせていただきます。
力を貸してくださった方、本当にありがとうございました!

Googleスプレッドシート関数✕正規表現

1=REGEXREPLACE(REGEXREPLACE(A1, "( -)|(  )", " "), "([ ](東京都|北海道|大阪府|京都府|[\S]{2,3}県).*)?$", "")

※内側のREGEXREPLACEは、都道府県の前に「 」(全角スペース1つ)ではなく、
「 -」(全角スペース+ハイフン)や「  」(全角スペース2つ)
が入っているケースがあったので削除しています。

投稿2023/10/24 23:00

yoichi0702

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問