在R正则表达式中使用九个以上的反向引用

时间:2011-11-30 04:17:52

标签: regex r gsub backreference

下面的代码不起作用,因为无法正确读取\ 10,\ 11等的替换字符串。它将\ 10读作\ 1并打印0代替,你可以帮我修复它吗? 其中一个主题中有一个答案,说我应该使用捕获或命名组,但我真的不明白如何使用它们。

headline <- gsub("regexp with 10 () brackets",
"\\1 ### \\2 ### \\3 ### \\4 ### \\5 ### \\6 ### \\7 ### \\8 ### \\9 ###
\\10### \\11### \\12### \\13### \\14### \\15### \\16",
page[headline.index])

2 个答案:

答案 0 :(得分:3)

根据?regexp,自{R-2.14.0起,regexpr()gregexpr()提供了命名捕获功能。不幸的是, <{1}}可用,或者sub()。因此,它可能对您有用,但可能需要比您希望的更多的腿部工作。

(有关命名组的一些示例,请参阅gsub()的示例部分。)

稍后再加上GREG SNOW&#39;答案

Greg Snow提到了使用?regexpr包执行此操作的可能性。这是一个示例,表明gsubfn确实可以处理超过9个反向引用:

gsubfn()

答案 1 :(得分:1)

您可以考虑使用gsubfn包而不是gsubfn中的gsub,它会提供更多有关如何创建替代广告的选项。