Estou usando IMPORTXML para pegar alguns dados e então regex para extrair algum texto. A parte que quero extrair é um nome.
Ele sempre vem depois de "Nome Completo:" (menos as aspas). Depois do nome, sempre há uma palavra seguida por dois pontos. Essa palavra pode ser Pronúncia, Linguística, Tipo ou qualquer outra coisa.
O mais próximo que posso chegar é esta fórmula:
=IFERROR(REGEXEXTRACT(REGEXREPLACE(JOIN(" ", IMPORTXML(B13, "//div[@id='meta']")), "\s+", " "), "Full Name:\s*([A-Za-z]+(?:[-'\s][A-Za-z]+)*)"), "")
Infelizmente, isso ainda deixa a última palavra.
Então se você tem por exemplo:
Nome completo: Abraham Lincoln Apelido: Honest Abe.
Eu só quero que ele retire Abraham Lincoln. Essa fórmula, como eu tenho, gera:
Abraham Lincoln Apelido
Outros exemplos:
- Nome completo: John Smith-Rogers Acabamento:
- Nome completo: David Ben-Williams Prelúdio:
- Nome completo: Sean O'Brian Apelido:
- Nome completo: D'Andre Ayton Hora:
- Nome completo: Andy Van Slyke Nome:
Saídas respectivas:
- John Smith-Rogers
- David Ben-Williams
- Sean O'Brian
- D'André Ayton
- Andy Van Slyke
Para um exemplo ao vivo: https://www.baseball-reference.com/players/l/lopezal01.shtml
A fórmula deve produzir: Alfonso Ramon Lopez
https://www.baseball-reference.com/players/r/ruthba01.shtml
A fórmula deve produzir: George Herman Ruth
O que mais preciso fazer tendo em mente que quero ter certeza de que nomes como O'Brien e Smith-Rogers não sejam afetados?
Considerando os exemplos fornecidos a seguir, criei uma solução que pode funcionar para você.
Experimente esta expressão regular:
Referência: Regexextract
Tente combinar:
e substituindo por:
Veja: regex101
Explicação
CORRESPONDER:
^Full Name:
: A string começa com o literal "Nome Completo: "( ... )
: então capture tudo para o grupo 1 que[^:]+?
: não é dois pontos (preguiçosamente) e certifique-se de que\w+:$
: sucedido por um espaço e uma palavra seguida por dois pontos.SUBSTITUIR:
$1
: Substituir pelo Nome Completo.Full Name:
LiteralFull Name
seguido de dois pontos literais:
\s+
Um ou mais espaços(.*?)
Grupo de captura 1 para capturar qualquer personagem preguiçosamente.\s+
Um ou mais espaços"[^:\s]+:
Qualquer caractere que não seja dois pontos:
ou ums
espaço seguido por dois pontos literais:
Esta abordagem usa uma ligeira variação do dado
xpath-query
, que então extrai o Nome Completo