背景
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
但这只是给我字符串type
,a
,timestamp
,a
,timestamp
的结束点而不是起始点,或a1
或a2
中的任何一个。
提取所有七个字母数字字符串的正确正则表达式是什么?
答案 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"