正则表达式 – 顺序替换匹配具有不同替换的字符串中的单个模式的
发布时间:2020-12-13 22:53:46 所属栏目:百科 来源:网络整理
导读:使用stringr包,很容易以矢量化方式执行正则表达式替换. 问题:如何执行以下操作: 替换中的每个单词 hello,world??your,make|[]world,hello,pos 不同的替代品,例如数量增加 1,2??3,4|[]5,6,7 注意,不能假设简单的分隔符,实际用例更复杂. stringr :: str_repl
使用stringr包,很容易以矢量化方式执行正则表达式替换.
问题:如何执行以下操作: 替换中的每个单词 hello,world??your,make|[]world,hello,pos 不同的替代品,例如数量增加 1,2??3,4|[]5,6,7 注意,不能假设简单的分隔符,实际用例更复杂. stringr :: str_replace_all似乎不起作用,因为它 str_replace_all(x,"(w+)",1:7) 为应用于所有单词的每个替换生成一个向量,或者它具有 str_replace_all(x,c("hello" = "1","world" = "2",...)) 不会为此目的而工作.
这是使用gsubfn的另一个想法. pre函数在替换之前运行,并且为每个替换运行fun函数:
library(gsubfn) x <- "hello,pos" p <- proto(pre = function(t) t$v <- 0,# replace all matches by 0 fun = function(t,x) t$v <- v + 1) # increment 1 gsubfn("w+",p,x) 这使: [1] "1,7" 这种变化会给出相同的答案,因为gsubfn维护一个计数变量用于proto函数: pp <- proto(fun = function(...) count) gsubfn("w+",pp,x) 有关使用count的示例,请参阅gsubfn vignette. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |