替换Julia中的捕获组

时间:2018-03-14 11:44:44

标签: regex julia

我正在尝试使用replace函数,doc指定

  

replace(string :: AbstractString,pat,r [,n :: Integer = 0])

     

搜索给定的模式pat,并用r替换每个匹配项。如果提供n,则最多替换n次。   与搜索一样,第二个参数可以是单个字符,向量或一组字符,字符串或常规字符   表达。如果r是一个函数,则每次出现都被替换为r(s),其中s是匹配的子字符串。如果pat是一个   正则表达式和r是SubstitutionString,然后r中的捕获组引用被替换为   相应的匹配文本。

我不明白最后一句,但找不到SubstitutionString(虽然有SubString,但我也无法直接找到该文档)。我想在r使用pat中指示的已捕获组进行替换。与Python中的以下简单示例相对应的东西:

regex.sub(r'#(.+?)#', r"captured:\1", "hello #target# bye #target2#")

返回'hello captured:target bye captured:target2'

1 个答案:

答案 0 :(得分:7)

可以通过SubstitutionString创建s""。与您使用r""创建正则表达式的方式类似。

我想这就是你要找的东西:

julia> replace("hello #target# bye #target2#",  r"#(.+?)#", s"captured:\1")
"hello captured:target bye captured:target2"

如果您在https://docs.julialang.org/en/stable/manual/strings/中搜索substitution string,那么您会在那里找到另一个例子。