正则表达式 - str_extract_all返回列表而不是向量

时间:2015-01-02 22:01:54

标签: regex r

我需要从这个向量中提取价格,而不是符号:“S /."

例如:“\ r \ n \ t \ t \ t \ t \ t /。499.95” - > 499.95

或:“\ r \ n \ t \ t \ t \ t \ t /。1,099.95” - > 1,099.95

这是我的尝试:

precios <- str_extract_all(tvs_prices, "[0-9]*\\,[0-9]*\\.?[0-9]*$")

这是我的载体:

 [1] "\r\n\t\t\t\t\tS/. 499.95"   "\r\n\t\t\t\t\tS/. 9,999" "\r\n\t\t\t\t\tS/. 899"      "\r\n\t\t\t\t\tS/. 1,349"
 [5] "\r\n\t\t\t\t\tS/. 1,499" "\r\n\t\t\t\t\tS/. 1,999" "\r\n\t\t\t\t\tS/. 699"   "\r\n\t\t\t\t\tS/. 499"  
 [9] "\r\n\t\t\t\t\tS/. 899"   "\r\n\t\t\t\t\tS/. 999"   "\r\n\t\t\t\t\tS/. 1,099"     "\r\n\t\t\t\t\tS/. 1,299"
 [13] "\r\n\t\t\t\t\tS/. 299"   "\r\n\t\t\t\t\tS/. 699"   "\r\n\t\t\t\t\tS/. 1,099" "\r\n\t\t\t\t\tS/. 1,899"
 [17] "\r\n\t\t\tS/. 1,499"

但我得到了这个结果:

a)清单,

b)有些在列表的元素中包含“character(0)”。

我不需要列表,而是一个向量,作为数字(as.numeric()):

[[1]]
character(0)

[[2]]
[1] "9,999"

当尝试更具体时,使用“^”,我只得到一个包含“character(0)”的列表:

代码:

precios <- str_extract_all(tvs_prices, "^[0-9]*\\,[0-9]*\\.?[0-9]*$")

For all the elements in the list (i don't need a list but a vector):

[[1]]
character(0)

[[2]]
character(0)

等原始载体上的所有元素......

1 个答案:

答案 0 :(得分:0)

这个正则表达式提取一个数字:

\d*(?:,\d{3})*(?:\.\d{2})?