我有长字符串,包含各种文本和数字数据,如
a <- "$3,295,000; 8 Units; 4.08% Cap Rate; 9,360 SF Bldg;"
我希望能够提取百分比,在本例中为4.08%
。
如何将此模式与grep()
匹配?
答案 0 :(得分:3)
您可以在sub
中使用非贪婪匹配:
sub('.*?([0-9.]+%).*', '\\1', a)
[1] "4.08%"
这只会匹配字符串中第一个模式实例。
.*?
非贪婪,所以它不会su&#34;吮吸&#34;以下模式中的字符符合您的要求。
答案 1 :(得分:1)
我们可以使用str_extract
library(stringr)
str_extract_all(a, "[0-9.]+%")[[1]]
#[1] "4.08%"
如果我们只需要匹配第一个实例,请使用str_extract
代替str_extract_all
。虽然另一个答案也做了同样的事情,但最好将str_extract_all
用于多个案例。
grep
用于返回字符串的索引,无论它是否具有特定模式。假设我们使用grep
,它会将索引返回为1(因为vector
中只有一个元素并且它与模式匹配)
grep("[0-9.]+$", a)
#[1] 1
为了提取子字符串,可以使用str_extract
或gsub
(来自base R
。
答案 2 :(得分:1)