web-dev-qa-db-ja.com

GoogleスプレッドシートでURLの単一の文字列から複数のパスを抽出する方法は?

Googleスプレッドシートで数式の2番目から最後の要素の部分範囲を取得するにはどうすればよいですか?

次のような文字列全体に散在する複数のURLを含む可能性があるセル内のhttps://example.com/*のすべての出現を抽出しようとしています。

abc https://example.com/abc https://google.com/ghi https://example.com/def/abc

次のように、スペースで区切られた単一の文字列でパスを取得します。

abc def/abc

SPLITが最も簡単な方法であるため、次のような数式の最初の項目を削除する必要があります。

=join("
",
  arrayformula(
    regexextract(
      split(A5, "https://example.com/", false, true),
      "[a-zA-Z0-9/\?=_]+")
    )
  )
2
wass rubleff

あなたは基本的なコンセプトを持っています。これは仕事をします:

=REGEXREPLACE(JOIN(" ",ARRAYFORMULA(IFERROR(
  REGEXEXTRACT(SPLIT(A1," ",TRUE,TRUE),
  "https://example.com/(\S+)"),""))),"\s+"," ")
  1. あなたは空白文字列をsplitします。URLには空白文字が含まれていないので、これは間違いなくそれらを分割しないので安全です。これはあなたに文字列の配列を与えます
  2. example.comで始まるすべてのドメインのすべてのパスが必要なため、REGEXEXTRACT正確にそれらのパスと、キャプチャグループ(\S+)を使用するパスのみを使用します。
  3. これで、正しいドメインを持たないすべての文字列についてエラーが発生します。したがって、IFERRORを使用して、これらの文字列を空の文字列に置き換えるだけで済みます。
  4. Splitの出力は配列なので、これらすべてをARRAYFORMULAでラップします。これで、空の文字列とパスの配列ができました。
  5. ここで、空白を使用してそれらを一緒にJOINします。ここでも、パスには空白が含まれていないため、構造が失われることはありません。
  6. 最後に、空白スペースタプルは不要で、REGEXREPLACEを使用していないため、クリーンアップしています。できた!

結果は、正しいドメインのみのすべてのパスの文字列であり、それぞれ1つの空白で区切られます。

ヒント:この数式は1つの大きな数式としてではなく、段階的に構築しました。

enter image description here

2