r - 从文本中提取字母数字字符串

时间:2015-04-09 23:16:36

标签: r

背景

Related question但不需要阅读

问题

我有一个字符串

str_temp <- "{type: [{a: a1, timestamp: 1}, {a:a2, timestamp: 2}]}"

我想从中提取所有七个字母数字子串:type, a, a1, timestamp, a, a2, timestamp。但是,我不能让我的正则表达式工作。

我使用library(stringr)等的各种组合尝试了基础R和[:word:], [:alnum:], [:alpha:]

一个例子:

> pattern <- "[:word:]"
> str_locate_all(str_temp, pattern)
[[1]]
     start end
[1,]     6   6
[2,]    11  11
[3,]    26  26
[4,]    34  34
[5,]    48  48

但这只是给我字符串typeatimestampatimestamp结束点而不是起始点,或a1a2中的任何一个。

提取所有七个字母数字字符串的正确正则表达式是什么?

2 个答案:

答案 0 :(得分:4)

这是一个有效的正则表达式。匹配所有字母数字但不匹配数字。

((?![0-9]+)[A-Za-z0-9]+)

http://www.rubular.com/r/EuF9AfdtXW

感谢Richard在r:

中展示了如何使用它
regmatches(str_temp, gregexpr("((?![0-9]+)[A-Za-z0-9]+)", str_temp, perl = TRUE))[[1L]]

答案 1 :(得分:-1)

str_extract_all(str_temp , "([A-Za-z]+)")
[[1]]
[1] "type"      "a"         "a"         "timestamp" "a"         "a"         "timestamp"