这里是 Regex 和 stringr 新手。我有一个包含一列的数据框,我想从中找到 10 位数字并仅保留前三位数字。否则,我只想保留那里的任何东西。
为了简单起见,我们假设它是一个像这样的简单向量:
new<-c("111", "1234567891", "12", "12345")
我想编写代码来返回一个包含以下元素的向量:111、123、12 和 12345。我还需要编写代码(我假设我会迭代执行此操作)以提取前两位数字一个 5 位数字的字符串,如上面的最后一个元素。
我试过:
gsub("\\d{10}", "", new)
但我不知道我可以为替换参数添加什么来获得我正在寻找的东西。还试过:
str_replace(new, "\\d{10}", "")
但我还是不知道要为替换参数输入什么才能只获取前 x 位数字。
编辑:我不同意这是一个重复的问题,因为这不仅仅是我想从字符串中提取前 X 位数字,而且我需要使用与模式匹配的特定字符串(例如,10 位数字字符串。 )
最佳答案
如果您愿意使用库 stringr
,您正在使用的 str_replace
来自该库。只需使用 str_extract
vec <- c(111, 1234567891, 12)
str_extract(vec, "^\\d{1,3}")
正则表达式 ^\\d{1,3}
匹配出现在短语开头的至少 1 到最多 3 个数字。 str_extract
,顾名思义,提取并返回这些匹配项。
关于r - Stringr 函数或 gsub() 来查找 x 数字字符串并提取前 x 数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508193/