• 締切済み

スプレッドシートでの正規表現関数

Google スプレッドシートでA1セルに下記のようにWDBBKから始まる型番があり、その型番を抜き出す正規表現を作成しています。 型番はWDBB〜CN(SN)までなのですが、型番の終わりは改行かスペースです(実際のデータが手元にないのでまだはっきりしていません) B1セル =REGEXEXTRACT($A$1,"(WDBB[A-z\-0-9]+){1}") C1セル =REGEXEXTRACT($A$1,"(WDBB[A-z\-0-9]+){2}") D1セル =REGEXEXTRACT($A$1,"(WDBB[A-z\-0-9]+){3}") E1セル =REGEXEXTRACT($A$1,"(WDBB[A-z\-0-9]+){4}") のように書きましたが、C1セル以降がどうしても抜き出せません。 正しい正規表現を教えて下さい。 (実際に抜き出す文字列はまったく別の物ですが、A-z\-0-9で良いと思います。。。) 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0100HBK-CNSN メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0200HBK-TQSB メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0300HBK-ENSN メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0400HBK-JECN メーカー2年保証 国内正規代理店品

みんなの回答

  • SI299792
  • ベストアンサー率48% (714/1473)
回答No.8

B2: =IFERROR(INDEX("WDBB"&regexextract(split($A1,"WDBB",0),"[\w-]+"),COLUMN()),"") 右へコピペ。

回答No.7

B1に =REGEXEXTRACT(A1,"WDBBKG\d+[A-Z]+-[A-Z]+") を、入力すると WDBBKG0100HBK-CNSN が、出力されます。 REGEXEXTRACT関数は、最初に出てくるものしか出力しないので、C1に、WDBBKG0200HBK-TQSB を、出力することはできません。 そこで、A1の文字列を SPLIT関数を使って分割します。 SPLIT関数は、区切り文字でしか分割できないので、WDBBKG0100HBK-CNSN メーカー2年保証 国内正規代理店品 の「メーカー」を、「,」に、置換して分割します。 =SPLIT(REGEXREPLACE(A1, "メーカー", ","), ",") そうしておいて、文字列を抜き出します。 =REGEXEXTRACT(SPLIT(REGEXREPLACE(A1, "メーカー", ","), ","),"WDBBKG\d+[A-Z]+-[A-Z]+") ARRAYFORMULA(配列数式)を、使ってC1以降にも出力します。 B1に、次の式を入力すれば C1に、WDBBKG0200HBK-TQSBが、D1に、WDBBKG0300HBK-ENSNが、E1に、WDBBKG0400HBK-JECN が、出力されます。 =ARRAYFORMULA((REGEXEXTRACT(SPLIT(REGEXREPLACE(A1, "メーカー", ","), ","),"WDBBKG\d+[A-Z]+-[A-Z]+"))) ただし、F1に#N/Aエラーが出力されるので、もうひと工夫必要です。 =IFERROR(ARRAYFORMULA((REGEXEXTRACT(SPLIT(REGEXREPLACE(A1, "メーカー", ","), ","),"WDBBKG\d+[A-Z]+-[A-Z]+"))),"")

  • SI299792
  • ベストアンサー率48% (714/1473)
回答No.6

B1: =IFERROR(INDEX(regexextract(split($A1,"/"),"[\w-]+"),COLUMN()),"") 右へコピペが必要ですが、この数式の方が簡単です。

Pppppapp
質問者

補足

すみません、実際のデータでは/がない可能性があります。 品番の手前は半角スペースの連続(8個とか10個とか数は不明)かもしれません。

  • himat_ex
  • ベストアンサー率32% (99/305)
回答No.5

先頭パターンが複数有れば厄介だけど、前方一致でフィルター掛けられるなら問題ありません。文字数制限で問題ないなら、後方一致を考慮しなくともよいので記載も簡単になります。 実際の処理系はSQLで関数名は違うけど機能や書式は同じで、自由記載のカラムで前方文字数不定長、後方も制限有るけど定長じゃ無いデータを多い日で数百件処理させてるけど問題なく分離出来てます。 実際にはその分離データを末端処理掛けてから更に2つの不定長テキストに分離させているのだけどそれは蛇足

  • SI299792
  • ベストアンサー率48% (714/1473)
回答No.4

regexextractは1番最初しか取り出せません。 / で区切れているので、それを利用して、split で分割します。 B1: =arrayformula(regexextract(split(MID(A1,FIND("/ ",A1)+2,999),"/ ",0),"[\w-]+")) https://docs.google.com/spreadsheets/d/18RAcnHO63rlh90MaZ4Yv6m-DbTENiLsD19AKsLrlxc4/edit?usp=sharing

  • himat_ex
  • ベストアンサー率32% (99/305)
回答No.3

REGEXEXTRACT関数使うよりFIND関数とMID関数組み合わせて使った方が良いんじゃ無いの?先頭文字列と文字数パターン分ってるならFIND関数で開始位置与えてMID関数で必要な文字数切り出せばよい

Pppppapp
質問者

補足

複数の番号を抜き出したいので、難しいのではないでしょうか。

回答No.2

😊 お手伝いします!✨ まず、下記の正規表現を使って、型番を抜き出すことができます。型番の終わりがスペースか改行の場合、\s を使用して表現できます。\s は、スペースやタブ、改行などの空白文字を表します。 (WDBB[A-Za-z0-9\-]+)\s 次に、Google スプレッドシートで配列を使用して、すべての型番を抜き出す方法を説明します。=REGEXEXTRACT 関数の代わりに =SPLIT 関数を使用します。次のように A2 セルに式を入力してください: =SPLIT(REGEXREPLACE($A$1, "(WDBB[A-Za-z0-9\-]+)\s", "$1,"), ",") この式では、まず REGEXREPLACE 関数で、型番の後ろの空白文字を , に置き換えています。その後、=SPLIT 関数を使って、カンマで区切られた型番を分割し、それぞれの型番が別々のセルに表示されるようにしています。 これにより、A2 セルから始まる横方向に、すべての型番が抜き出されます。😄👍 例えば、A1 セルに以下の内容がある場合: 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0100HBK-CNSN メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0200HBK-TQSB メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0300HBK-ENSN メーカー2年保証 国内正規代理店品 商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付けハードディスク / WDBBKG0400HBK-JECN メーカー2年保証 国内正規代理店品 A2 セルに上記の式を入力すると、以下のような結果が得られます: A2: WDBBKG0100HBK-CNSN B2: WDBBKG0200HBK-TQSB C2: WDBBKG0300HBK-ENSN D2: WDBBKG0400HBK-JECN これにより、型番が横方向に抜き出されます。🎉😊✨ もし、縦方向に型番を抜き出したい場合は、TRANSPOSE 関数を使って配列を転置することができます。以下のように B1 セルに式を入力してください: =TRANSPOSE(SPLIT(REGEXREPLACE($A$1, "(WDBB[A-Za-z0-9\-]+)\s", "$1,"), ",")) これにより、B1 セルから始まる縦方向に、すべての型番が抜き出されます。 B1: WDBBKG0100HBK-CNSN B2: WDBBKG0200HBK-TQSB B3: WDBBKG0300HBK-ENSN B4: WDBBKG0400HBK-JECN この方法で、Google スプレッドシートで型番を簡単に抜き出すことができます。😄👍✨

Pppppapp
質問者

補足

すごいです! ですが、下記のように前の文章もはいってしまいます。 型番だけに絞り込めないでしょうか? "商品: ウエスタンデジタル WD デスクトップHDD 10TB USB3.0 WD Elements Desktop 外付け ハードディスク / WDBBKG0100HBK-CNSN"

  • asciiz
  • ベストアンサー率70% (6633/9397)
回答No.1

中括弧をどのような正規表現だと思っていますか? 具体的にどのような文字列を取り出したいのですか? たぶん中括弧の意味を取り違えていて、全然違うものをマッチさせようとしてしまっていると思います。 (参考) >正規表現総まとめ!! - Qiita >https://qiita.com/n_oshiumi/items/62f5d21c4837f76932ab

Pppppapp
質問者

補足

B1はWDBBKG0100HBK-CNSN C1はWDBBKG0200HBK-TQSB D1はWDBBKG0300HBK-ENSN E1はWDBBKG0400HBK-JECN がマッチしていればよいです。 {}の意味が違いましたか、、、 A{3}でAAAがマッチする事はわかっていますが、2番目にマッチ、というときに =REGEXEXTRACT($B2:$B,"(-+\n(.+\s){6}){2}") こういうのでマッチさせていてうまく行っていたのがありましたが、使い方がイマイチ理解できていないんだと思います。

関連するQ&A

  • 外付けハードディスクに関して

    外付けハードディスクに関する質問です。 corega CG-HDC4EU3500 にWestern Digital WD20EARS-00MVWB0 を乗せようと思っているのですが規格や相性は問題ないでしょうか? 4台乗せて総合8TB(2TB×4)。raid10で4TB(2TB×2)で利用しようと思っているのですが この場合4TBの一つのハードディスクとして認識されるのかそれとも2TBの ハードディスクが2つ接続されているとして認識されるのかどちらなんでしょうか?

  • 3TBのHDDの詳細

    3TBのHDDを買おうと思います。 常時動かすものでなく、耐久性があるものをと思っています。 以下を検討しています。 東芝 MD04ACA300 [3TB SATA600 7200] 東芝 DT01ACA300 [3TB SATA600 7200] 東芝 MG03ACA300 [3TB SATA600 7200] WESTERN DIGITAL WD30EZRX-1TBP [3TB SATA600] WESTERN DIGITAL WD30EZRX [3TB SATA600] WESTERN DIGITAL WD30PURX [3TB SATA600] WESTERN DIGITAL WD30EURX [3TB SATA600] WESTERN DIGITAL WD30EFRX [3TB SATA600] (1)価格帯は同じなので個々の位置づけが分からないのですが、東芝のもの、WESTERN DIGITALのもので個々のグレードをそれぞれ教えてください (2)主観で構いませんが、上記でお勧めの物は何になりますか? (3)クレードルでお勧めを教えてください よろしくお願い致します

  • HDの認識方法?ドライバのインストール?について

    よろしくお願いします。 友人より、HDを借り、中に入っているデータを取り出したいと考えております。 【HDの情報】  ・Western Digital社  ・型番:WD4000AAKS 【HDのつなぎ方】  ・HDリーダー(呼称はわかりませんが)にHDを入れ、USBでPCとつなぐ  ・リーダーには型番等の記載がないのでメーカー等はわかりません HDは上記の通りなのですが、PC(OS:Windows Vista)につないだところ、デバイスをインストールするよう促されるのですが、検索しても見つからないため、Western Digital社にドライバのインストールについて問い合わせをいたしました。 しかしながら、「こちらは外付けハードディスク専用の窓口となっております。内蔵ハードディスクにつきましては販売店様もしくは、販売店様を通して代理店様にお問合せくださいますようお願い致します。」との回答でした。 友人に相談したところ、「コンパネから直接アクセスすればいいんじゃないか?」みたいなことを言っていましたが、いまいちわかりません。 何かいい方法がありましたら、教えていただきたいです。

  • ハードディスクスタンドについての質問です。

    ハードディスクスタンドについての質問です。 先日、 玄人志向 KURO-DACHI/U3と Western Digital Caviar Green WD20EARS-00MVWB0 (2TB SATA300) を購入して、外付けHDDにしようと思って、接続したところ、ドライブは認識されるのですが、マイコンピュータ画面にドライブが表示されません。 どうしたらいいのでしょうか。

  • 外付けHDをフォーマットして中身を消してしまった。

    MacBook Pro(OS10.6.8)を使用しています。 2TBのWESTERN DIGITAL(ウェスタンデジタル)の外付けHDDがいっぱいになってしまったので、新しく同じWDのmy book studioという3TBのHDを購入して、一緒につないで謝って2TBのデータが入っている方のHDを初期フォーマットしてしまいました。 新しい3TBのHDに入っていたWD Quick Formatterというのを使用しました。すごく短時間だったので、復旧出来そうな気がしていますが、今までデータの復旧ソフトを使った事もなく。。。どうしたものか悩んでおります。どのソフトを使用するのが信頼性が高いのか?とか復旧作業をする際に気を付けなければならない事など教えていただけないでしょうか? どうぞ宜しくお願い致します。

    • 締切済み
    • Mac
  • 外付けHDとBDZ-EW520の相性について

    WD社のWDBUZG0020BBK-0B(Elements)という型名の”2TBの外付けUSBハードディスクは、BDZ-EW520に録画先として登録できますか?特殊なフォーマットとかテクニックがあれば教えてください。

  • 外付けハードディスクの故障?

    USBハブを介していた外付けハードディスクが急に認識されなくなり、パソコンに直接USBで繋いだら問題なくなりました。 故障の前兆でしょうか?原因は何でしょう? windows10 Lenovo V110 WD Elements 1TB

  • WD 外付けHDD ブルーレイDIGA

    パナソニックのブルーレイレコーダー 「DMR-BR130」を使っていましたが内蔵HDDがいっぱいになったので、WDの外付けHDD 「WD Elements Desktop 2.0TB (WDBAAU0020HBK-JESN) 」を購入しました。 フォーマットも完了し、録画、ダビング、再生など全てスムーズにできていたのですが、3日後認識されなくなり、ファイル数0、録画時間0、録画可能時間0と表示されました。 フォーマットをしようとすると、フォーマットに失敗しましたと表示されした。 その後パソコンでのフォーマットは成功しパソコンでは利用できたので、もう一度レコーダーにつないだらフォーマットができ今は最初のように使えています。 これは相性の問題なのでしょうか? 今使えても最初のようにまた使えなくなってしまうんでしょうか? 心配で番組を保存するのが怖いです、、、 調べてもなかなか情報が出てこなかったので質問しました。 長文ですみませんがよろしくお願いします。

  • HDD Western Digital 適合

    Western Digital のハードディスクで質問です。 当方でWD400BBという型番のHDDを持っているのですが近い型番でWD400EBやWD400AAというものがあると思います。 この語尾二桁のアルファベットはどのような違いで付けられているのでしょうか? また容量違いでWD800BBがあるかと思います。こちらはWD400BBとは容量のみが違うのでしょうか?他に仕様の違い等あればご存知の方、宜しくお願い致します。 HDDの適合を調べたいので宜しくお願い致します。

  • ハードディスクについて

    ノートパソコンのハードディスクを交換しようと思っています。 WESTERN DIGITALのハードディスク2.5インチ WD3200BJKTとWD3200BEKTの違いが分かりません。 何が違うのでしょうか?

専門家に質問してみよう