【发布时间】:2021-11-14 07:09:57
【问题描述】:
我想将子字符串"A" 插入长度> 65536 的字符串n 的位置。我正在使用 gsub 来执行此操作,因为它非常有效。
n = 5
text <- paste(rep("a", 70000), collapse = "")
lhs <- '^(.{n})(.*)$'
rhs <- '\\1A\\2'
gsub(lhs, rhs, text, perl=TRUE)
当我选择 n 较小时,例如5、代码运行正常。但是,如果 n = 66000 显示以下错误消息:
In gsub(lhs, rhs, text, perl = TRUE) : PCRE pattern compilation error
'number too big in {} quantifier'
at '})(.*)$'
我该如何解决这个问题?
【问题讨论】:
-
似乎 PCRE 在限制量词时对 max 参数实施了一些限制。它仍然令人印象深刻,因为 TRE 在同一个结构中只有 256 个字符的限制。你试过
stringr::str_replace吗?在这种情况下可能更可靠。 -
另一个想法是将构造拆分为多个部分:
gsub('^(.{n/2})(.{n/2})(.*)$', '\\1\\2A\\3', text, perl=TRUE)(当然是伪)。