我想使用gsub
从文件名中删除字符。
在下面的例子中,期望的输出是23
digs = "filepath/23-00.xlsx"
我可以删除23之前的所有内容如下:
gsub("^\D+", "",digs)
[1] "23-00.xlsx"
或之后的所有内容:
gsub("\-\d+\.xlsx$","", digs)
[1] "filepath/23"
我如何同时做这两件事?
我们可以使用|
(OR(,即匹配字符(.*
(直到/
或(|
(,匹配后面跟着字符的-
(.*
(,替换为空白(""
(
gsub(".*/|-.*", "", digs)
[1] "23"
或者只做parse_number
readr::parse_number(digs)
[1] 23
您可以使用类似的sub
sub("^\D+(\d+).*", "\1", digs)
# => [1] "23"
请参阅R演示。请参阅regex演示详细信息:
^
-字符串的开头D+
-一个或多个非数字字符(d+)
-组1(1
表示该组值(:一位或多位.*
-尽可能多的任何零个或多个字符