gpt4 book ai didi

regex - 用不同的替换顺序替换字符串中匹配单个模式的多个位置

转载 作者:行者123 更新时间:2023-12-04 13:49:22 27 4
gpt4 key购买 nike

使用 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,world??your,make|[]world,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,2??3,4|[]5,6,7"

由于 gsubfn 保持 count,因此这种变化将给出相同的答案。用于原型(prototype)函数的变量:
pp <- proto(fun = function(...) count)
gsubfn("\\w+", pp, x)

有关使用 count 的示例,请参阅 gsubfn 小插图.

关于regex - 用不同的替换顺序替换字符串中匹配单个模式的多个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com