web-dev-qa-db-fra.com

Comment extraire plusieurs chemins à partir d'une seule chaîne d'URL dans Google Sheets?

Comment puis-je obtenir une sous-plage de l'avant-dernier élément d'une formule sous Google Sheets?

J'essaie d'extraire toutes les occurrences de https://example.com/* dans une cellule qui peut contenir plusieurs URL dispersées sur une chaîne comme:

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

afin que j'obtienne les chemins dans une seule chaîne, séparés par des espaces comme suit:

abc def/abc

Comme SPLIT semble être le moyen le plus simple pour cela, je dois me débarrasser du premier élément d'une formule comme:

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

Vous avez le concept de base juste à assembler étape par étape. Cela fait le travail:

=REGEXREPLACE(JOIN(" ",ARRAYFORMULA(IFERROR(
  REGEXEXTRACT(SPLIT(A1," ",TRUE,TRUE),
  "https://example.com/(\S+)"),""))),"\s+"," ")
  1. Vous split la chaîne dans les espaces blancs, c'est sûr car les URL ne contiennent pas d'espace blanc, donc vous ne les décomposez certainement pas. Cela vous donne un tableau de chaînes
  2. Puisque vous voulez tous les chemins pour tous les domaines commençant par example.com vous REGEXEXTRACT exactement ces chemins et uniquement ces chemins utilisant un groupe de capture (\S+).
  3. Maintenant, vous obtiendrez une erreur pour chaque chaîne qui n'a pas le domaine correct. Vous utilisez donc IFERROR pour remplacer simplement ces chaînes par des chaînes vides, nous ne nous en soucions pas.
  4. Nous enveloppons tout cela dans ARRAYFORMULA puisque la sortie de split est un tableau. Nous avons donc maintenant un tableau de chaînes et de chemins vides.
  5. Nous les JOIN maintenant ensemble en utilisant un espace blanc, encore une fois, les chemins ne contiennent pas d'espace blanc, donc nous ne perdons aucune structure.
  6. Enfin, nous nettoyons tous les tuples d'espaces blancs car ils sont inutiles et pas très jolis en utilisant REGEXREPLACE. Terminé!

Le résultat est une chaîne de tous les chemins pour le domaine correct uniquement, séparés par un espace chacun.

Astuce: J'ai construit cette formule étape par étape, non pas comme une grande formule mais par morceaux exactement dans la séquence décrite ci-dessus pour garder les choses gérables.

enter image description here

2
Cornelius Roemer