Digamos que eu tenha a string abaixo
mystring = '12312022273qeq'
Agora preciso combinar a string com 2023 or 2024 or 2000
e então substituir a parte combinada por uma adicionada '-'
e colocá-la de volta na string original.
Então minha sequência final será
newstring = '12312022-273qeq'
Eu sei que existe uma função R gsub() para substituir parte da string com base na correspondência de regex, no entanto, não consegui descobrir como posso usar essa função neste problema.
Com base na sugestão de @jay.sf, tentei com o seguinte
gsub('(2023)|(2022)|(2021)', '\\1-', '12312022273qeq')
No entanto, ele fornece um resultado incorreto"1231-273qeq"
Qualquer ajuda sobre este assunto será muito útil
O problema é que
\1
se refere ao primeiro grupo de captura, mas no código da pergunta há três grupos de captura e a string de substituição nunca se refere a\2
ou\3
. Em vez disso, faça assim.Além disso, se esperarmos apenas uma substituição na string, use
sub
em vez degsub
.O terceiro usa uma expressão de comprimento zero. Veja
?regex
para mais informações.Para usar o padrão na pergunta, use a seguinte string de substituição:
Se soubéssemos que a inserção deveria ser sempre entre o 8º e o 9º caractere, poderíamos fazer isso:
Observação