regex - 一次在字符串中的多个位置插入一个字符

标签 regex r text gsub

假设我有一个字符串

"ABCDEFGHI56dfsdfd"

我想做的是一次在多个位置插入一个空格字符。

例如。我想在随机选择的两个位置插入空格字符,比如 4 和 8。

所以输出应该是

"ABCD EFGH I56dfsdfd" 

最有效的方法是什么?鉴于字符串中可以包含任何类型的字符(不仅仅是字母表)。

最佳答案

这是一个基于正则表达式的解决方案:

vec <- "ABCDEFGHI56dfsdfd"

# sample two random positions
pos <- sample(nchar(vec), 2)
# [1] 6 4

# generate regex pattern
pat <- paste0("(?=.{", nchar(vec) - pos, "}$)", collapse = "|")
# [1] "(?=.{11}$)|(?=.{13}$)"

# insert spaces at (after) positions
gsub(pat, " ", vec, perl = TRUE)
# [1] "ABCD EF GHI56dfsdfd"

这种方法基于积极的前瞻,例如,(?=.{11}$)。在此示例中,在字符串结尾 ($) 之前的 11 个字符处插入了一个空格。

关于regex - 一次在字符串中的多个位置插入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27608623/

相关文章:

C# 正则表达式 : Get sub-capture?

r - 具有位置向量的向量子集列表

c# - 使用C#清除文本文件的内容

java - 破坏了我接收短信的能力

REGEX - 将非字母数字符号的任意组合折叠为单个 "."

c# - RegEx -- 没有错误的量词 {x,y}

javascript - 正则表达式排除 URL

r - 如何使用 R data.table 比较列之间的多个字符串长度?

r - 在 Shiny 服务器上载后在 R 中解压文件

html - 从 HTML 文本输入中删除插入符号