理解R中的`regex`

时间:2014-04-16 14:21:10

标签: regex string r foreach iteration

理解正则表达式有时可能会有麻烦。特别是如果你不熟悉的话,就像我一样。

R 中,有一些内置函数(base包),我想了解并能够使用。喜欢:

grepgsub,其中(p, x)为参数px是一种模式,split是要查找的字符向量。 regexp函数也像其他许多函数一样将string <- "39 22' 19'' N" 作为参数。

无论如何,我有一个例子如:

stringr

我需要能够从中提取数字。因此,使用这些iteratorsforeachiter库,我试图使用foreachstr_locate(string, "[0-9]+")找出表达式。

z <- str_extract(obj, "[0-9]+")找到并x <- iter(z) nextElem(x) 仅提取字符串中的第一个匹配项。

我尝试过像

这样的东西
a <- foreach(iter(z))
a

但它不起作用。另一个通常不起作用。

{{1}}

我应该如何使用上述库修复此问题?

感谢。

3 个答案:

答案 0 :(得分:1)

检查http://cran.r-project.org/web/packages/stringr/stringr.pdf

str_extract_all(your_string, "[0-9]+")

答案 1 :(得分:0)

基本功能的结果完全相同:

strsplit(gsub("(\\D+)"," ", string), " ")

答案 2 :(得分:0)

这是在基础R中执行此操作的另一种方式:

string <- "39 22' 19'' N"
regmatches(string,gregexpr("[0-9]+",string))
# [[1]]
# [1] "39" "22" "19"

请注意regmatches(...)返回一个列表,其中每个元素都是带匹配的char向量。因此,只需要使用char矢量:

regmatches(string,gregexpr("[0-9]+",string))[[1]]
# [1] "39" "22" "19"