Tenho uma string da qual desejo extrair todas as informações antes do primeiro espaço e todas as informações depois do primeiro espaço.
myNames
"Brown R A" "Davis T" "Polter L"
Para fazer isso eu tentei;
gsub("(.*) (.*)", "\\2 \\1, myNames)
Isso é bom para qualquer nome em que eu tenha apenas uma primeira inicial, mas não funciona corretamente quando temos mais, por exemplo, aqui obtemos o primeiro nome retornado como; "A Brown R" enquanto estou tentando obter "RA Brown"
Eu tentei dividir tudo no primeiro espaço em branco usando, gsub("(.*)^\\s(.*)", "\\2 \\1, myNames)
mas isso não pareceu mudar nada
Sua primeira regex
(.*)
é muito gananciosa. Supondo que sobrenomes tenham pelo menos 2 caracteres, você pode usar o{n,}
quantificador de repetição:O que dá:
E para nomes com apóstrofos (
'
), por exemplo.você pode precisar de:
que procura por qualquer coisa que não seja um espaço.
Acho que sua tentativa está quase lá, mas precisa fazer alguns ajustes, por exemplo,