web-dev-qa-db-ja.com

Googleスプレッドシート-REGEXチャレンジ

次のような内容のセルの長いGoogleシート列があります。

#text: Jacob Zuma
@domain: https://www.theguardian.com/world/zuma

#text: World news
@domain: https://www.theguardian.com/world/world

#text: ANC (African National Congress)
@domain: https://www.theguardian.com/world/anc-african-national-congress

#text: South Africa
@domain: https://www.theguardian.com/world/southafrica

#text: Africa
@domain: https://www.theguardian.com/world/africa

このように見える必要があります:

Jacob Zuma, World news, ANC (African National Congress), South Africa, Africa

基本的に、すべてのヘッダー(#text + @ domain)とURLを取り除き、サブジェクトのみをすべてコンマで区切って並べる方法を探しています。

それを行う方法を理解する上で助けていただければ幸いです。

1
Elad Ratson

解決策は次のとおりです。

まず、データはすべてシートの列aにあり、空白行で区切られたテキストの各2行は1つのセルを表していると想定しています。また、列aのパターンが5セルの直後に繰り返されると仮定しています。

  1. 次の式を列bに貼り付けます。

    =trim(REGEXEXTRACT(A1,"(?:\s)[^\n]*"))

  2. 次の数式を列cに貼り付けます。

    =JOIN(", ",indirect(ADDRESS((row()-1)*5+1,2)&":"&ADDRESS((row())*5,2)))

希望するテキストのリストは列cにあります。

1
webstermath

ここでは正規表現が過剰だと感じています。非正規表現の方法-

  • 「#text:」で始まるすべての単語をグループとして含むように列を並べ替えます
  • 検索と置換機能(Ctrl + Hキーボードショートカット)を使用して「#text:」を検索し、Wordを空白に置き換えます
  • セル範囲A1:A5には、ソート後のサブジェクトキーワードが含まれていると仮定します。コンマ区切りリストが必要なセルでこの数式を試してください

    =ArrayFormula(concatenate(A1:A5&", "))

0
mvark

列Aの文字列を想定して、試してください

=Textjoin(", ", 1, ArrayFormula(if(len(A1:A), regexextract(A1:A, "\s(.+)\n"),)))

それが機能するかどうかを確認しますか?

(範囲をスーツに合わせて変更します)。

0
JPV