如何从R中的字符串中提取版本号

How to extract version number from String in R

使用 R、stringr 或任何其他包,我如何根据此规则获取版本号:

看到“v”时开始,看到“_”或“”时结束

这是一个例子

example <- c("daata v2.0 jkdfajfkdal fdadjfk 398432", "data 432 dfafd v4.0_ dfakfld")

我要:

ex2 <- c("v2.0", "v4.0")

非常感谢!

我们可以在 base R 中使用 regexpr/regmatches 来匹配 v 后跟一个或多个数字 (\d+) 后跟一个点 (. ) 和一位或多位数字

regmatches(example, regexpr("v[0-9]+(\.[0-9]+)?", example))
#[1] "v2.0" "v4.0"

这里我们假设所有的元素都有这个模式。如果他们没有模式,那么 regexpr return 是一个 -1 的索引,因此我们得不到与之对应的值。因此,在我们执行 regmatches 之前,应该更改那些 -1 或使用索引到 return,无论它是 -1 还是 NA。但是一个更简单的选择是 str_extract which returns NA where there are no match

library(stringr)
str_extract(example, "v[0-9]+(\.[0-9]+)?")