2017-09-25 2 views
1

Je veux ajouter deux onglets divisions dans un fichier TSV après l'apparition d'abord + Nom de famille (\nJohn Smith\t):Comment utiliser remplacer avec le groupe de capture?

dl=readstring(fileName) 
dl=replace(dl,r"(\n[A-Za-z\s]+\t)","\1\t\t") 

Je reçois d'abord + Nom remplacé par x01. Les docs disent quelque chose sur la chaîne de substitution, mais je ne peux pas trouver la mise en œuvre

Mise à jour: ce substitue à un groupe

dl=replace(dl,r"(\n[A-Za-z\s]+\t)",s"\1") 

Mais ceci:

dl=replace(dl,r"(\n[A-Za-z\s]+\t)",s"\1\t\t") 

provoque une erreur Bad Replace. Les symboles sans \ semblent bien.

Répondre

2

Cela me semble être un problème. Mais vous pouvez utiliser cette solution:

julia> dl = "\nJohn Smith\t"; 
julia> s = Base.SubstitutionString; 
julia> dl=replace(dl, r"(\n[A-Za-z\s]+\t)", s("\\1\t")) 
"\nJohn Smith\t\t" 

modifier:

Je pense que cela vaut mieux:

julia> dl = "\nJohn Smith\t"; 
julia> dl=replace(dl, r"(\n[A-Za-z\s]+\t)", @s_str("\\1\t")) 
"\nJohn Smith\t\t" 

BTW si vous voulez ajouter le numéro après groupe de capture, alors vous pourriez faire autre astuce (groupes nommés):

julia> replace("aAa", r"(?<one>A+)", s"\g<one>1") 
"aA1a"