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")