如何使用替换捕获组?

时间:2017-09-25 17:10:21

标签: julia

我希望在First + Last name(\nJohn Smith\t)出现后将两个制表符分隔到tsv文件中:

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

我将第一个+姓氏替换为x01。文档说明替换字符串,但我无法找到实现

更新:这可以替代一个组

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

但是这个:

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

导致错误Bad Replace。没有\的符号似乎很好。

1 个答案:

答案 0 :(得分:2)

对我而言似乎是个错误。但是你可以使用解决方法:

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"

编辑

我认为这更好:

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如果你想在捕获组后附加数字,那么你可以做其他技巧(命名组):

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