J'ai une situation simple, mais j'ai du mal à utiliser groupe et backreference dans l'expression régulière. Comment pourrais-je faire cela avec stringr :: str_replace
?.
Par exemple, je veux transformer test.txt
en test.evaluation.txt code>. Je souhaite quelque chose comme ceci:
stringr::str_replace("test.txt", "\\.(\\1)$", ".evaluation.(\\1)")
Je voudrais utiliser le groupe "1" pour enregistrer le format de fichier. Merci d'avance si quelqu'un peut vous aider avec une réponse dans ce format.
3 Réponses :
MODIFIER
Avec stringr
:
my_string<-"test.txt" res<-unlist(strsplit(my_string,"\\.")) paste0(res[1],".evaluation.",res[2]) [1] "test.evaluation.txt"
Pas le plus efficace:
stringr::str_replace_all(my_string,"([a-z])(.txt)","\\1.evaluation\\2") [1] "test.evaluation.txt"
Une option avec sub
pour faire correspondre un .
et le remplacer par .
suivi par 'evaluation' et un autre . code>
sub("\\.", ".evaluation.", my_string)
#[1] "test.evaluation.txt"
Avec des groupes de capture:
sub("\\.([[:alnum:]]+)$","\\.evaluation\\.\\1","text.txt") [1] "text.evaluation.txt"
Je pense que la correspondance de motif devrait être différente
stringr :: str_replace ("test.txt", "\\. ([^.] *) $", ".evaluation. \\ 1")