如何使用regexp将零填充到字符串中以获得长度为4(从开始到结束)?

如何使用regexp将零填充到字符串中以获得长度为4(从开始到结束)?,r,R,我有一个向量: x <- c("1. Ure.html", "15. Astra basta.html", "16. Mafa of Part 4.html", "16.1 Veka--Cons.pdf") 如何使用regexp获取向量y?我需要从起点到终点为长度为4的字符串添加前导零 y <-c("0001. Ure.html", "0015. Astra basta.html", "0016. Mafa of Part 4.html", "0016.1 Veka--Cons.p

我有一个向量:

x <- c("1. Ure.html", "15. Astra basta.html", "16. Mafa of Part 4.html", "16.1 Veka--Cons.pdf")
如何使用regexp获取向量y?我需要从起点到终点为长度为4的字符串添加前导零

y <-c("0001. Ure.html", "0015. Astra basta.html", "0016. Mafa of Part 4.html", "0016.1 Veka--Cons.pdf")
一个选项是gsubfn


在base R中,查找匹配项

m <- regexpr("^\\d+", x)
提取并强制匹配为所需格式,并更新原始向量中的匹配位置

regmatches(x, m) <- sprintf("%04s", regmatches(x, m))
我们可以从stringr中使用str_replace并用0填充附加值

library(stringr)
str_replace(x, "\\d+", function(m) str_pad(m, 4, pad = '0'))
#[1] "0001. Ure.html"      "0015. Astra basta.html" 
#    "0016. Mafa of Part 4.html" "0016.1 Veka--Cons.pdf" 
这也可以通过sprintf实现

library(stringr)
str_replace(x, "\\d+", function(m) str_pad(m, 4, pad = '0'))
#[1] "0001. Ure.html"      "0015. Astra basta.html" 
#    "0016. Mafa of Part 4.html" "0016.1 Veka--Cons.pdf" 
str_replace(x, "\\d+", function(m) sprintf('%04s', m))