r-使用gsub提取第一个整数



我想使用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表示该组值(:一位或多位
  • .*-尽可能多的任何零个或多个字符

最新更新