理解正则表达式有时可能会有麻烦。特别是如果你不熟悉的话,就像我一样。
在 R 中,有一些内置函数(base
包),我想了解并能够使用。喜欢:
grep
和gsub
,其中(p, x)
为参数p
,x
是一种模式,split
是要查找的字符向量。 regexp
函数也像其他许多函数一样将string <- "39 22' 19'' N"
作为参数。
无论如何,我有一个例子如:
stringr
我需要能够从中提取数字。因此,使用这些iterators
,foreach
,iter
库,我试图使用foreach
或str_locate(string, "[0-9]+")
找出表达式。
z <- str_extract(obj, "[0-9]+")
找到并x <- iter(z)
nextElem(x)
仅提取字符串中的第一个匹配项。
我尝试过像
这样的东西a <- foreach(iter(z))
a
但它不起作用。另一个通常不起作用。
{{1}}
我应该如何使用上述库修复此问题?
感谢。
答案 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"