用相等数量的空格替换多个前导字符的本机正则表达式方法
Native regex way to replace multiple leading chars with equal number spaces
我有一些字符串,它们的间距是我想要的,但有我不想要的前导数字。 我想用相等数量的空格替换这些前导数字中的每一个,以保持间距。我可以使用 gsubfn 包来做到这一点但很好奇是否有原生的 R 正则表达式方法来完成此任务。
我可以仅使用本机 R 正则表达式函数实现与下面相同的结果吗?
MWE:
library(gsubfn)
string <- c(
"1 12 end line",
"10 3 end line",
"50 444 end line",
"100 54 end line",
"1000 5 end line"
)
gsubfn('^\d+', function(x) gsub('\d', ' ', x), string)
期望的结果:
[1] " 12 end line"
[2] " 3 end line"
[3] " 444 end line"
[4] " 54 end line"
[5] " 5 end line"
您想用 space 替换字符串开头的每个单个数字。
使用
> gsub("\G\d", " ", string, perl=TRUE)
[1] " 12 end line"
[2] " 3 end line"
[3] " 444 end line"
[4] " 54 end line"
[5] " 5 end line"
参见 online regex demo(稍微修改以使用多行字符串输入)。
\G\d
模式匹配字符串的开头或上一次成功匹配(使用 \G
)的结尾,然后匹配被替换为 space 的数字。
我有一些字符串,它们的间距是我想要的,但有我不想要的前导数字。 我想用相等数量的空格替换这些前导数字中的每一个,以保持间距。我可以使用 gsubfn 包来做到这一点但很好奇是否有原生的 R 正则表达式方法来完成此任务。
我可以仅使用本机 R 正则表达式函数实现与下面相同的结果吗?
MWE:
library(gsubfn)
string <- c(
"1 12 end line",
"10 3 end line",
"50 444 end line",
"100 54 end line",
"1000 5 end line"
)
gsubfn('^\d+', function(x) gsub('\d', ' ', x), string)
期望的结果:
[1] " 12 end line"
[2] " 3 end line"
[3] " 444 end line"
[4] " 54 end line"
[5] " 5 end line"
您想用 space 替换字符串开头的每个单个数字。
使用
> gsub("\G\d", " ", string, perl=TRUE)
[1] " 12 end line"
[2] " 3 end line"
[3] " 444 end line"
[4] " 54 end line"
[5] " 5 end line"
参见 online regex demo(稍微修改以使用多行字符串输入)。
\G\d
模式匹配字符串的开头或上一次成功匹配(使用 \G
)的结尾,然后匹配被替换为 space 的数字。