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/\?=_]+")
)
)
あなたは基本的なコンセプトを持っています。これは仕事をします:
=REGEXREPLACE(JOIN(" ",ARRAYFORMULA(IFERROR(
REGEXEXTRACT(SPLIT(A1," ",TRUE,TRUE),
"https://example.com/(\S+)"),""))),"\s+"," ")
split
します。URLには空白文字が含まれていないので、これは間違いなくそれらを分割しないので安全です。これはあなたに文字列の配列を与えますexample.com
で始まるすべてのドメインのすべてのパスが必要なため、REGEXEXTRACT
正確にそれらのパスと、キャプチャグループ(\S+)
を使用するパスのみを使用します。IFERROR
を使用して、これらの文字列を空の文字列に置き換えるだけで済みます。ARRAYFORMULA
でラップします。これで、空の文字列とパスの配列ができました。JOIN
します。ここでも、パスには空白が含まれていないため、構造が失われることはありません。REGEXREPLACE
を使用していないため、クリーンアップしています。できた!結果は、正しいドメインのみのすべてのパスの文字列であり、それぞれ1つの空白で区切られます。
ヒント:この数式は1つの大きな数式としてではなく、段階的に構築しました。