使用正则表达式的单个字符串的额外数组字符串的最佳方法

时间:2016-02-03 17:27:10

标签: regex r string

我有一个从JSON转换而来的数据表,其中一列的行看起来像是字符类:

select *
from SearchRecord sr1
where
        id between [Id:] / 10000 * 10000 - 9999 and [Id:] / 10000 * 10000 + 10005 
    and (select count(*) from SearchRecord sr2 where sr2.id between sr1.id and [Id:]) <= 6
    and (select count(*) from SearchRecord sr3 where sr3.id between [Id:] and sr1.id) <= 6

我真正想要的是objectId的矢量,所以理想情况下我会得到:

"[{u'className': u'Sticker', u'__type': u'Pointer', u'objectId': u'mYz1ietNEt'}, {u'className': u'Sticker', u'__type': u'Pointer', u'objectId': u'FVn0hE5Zar'}, {u'className': u'Sticker', u'__type': u'Pointer', u'objectId': u'ZxUTYYCunL'}]"

到达那里最好的方法是什么?或者我怎么去那里?对于单个字符串['mYz1ietNEt', 'FVn0hE5Zar', 'ZxUTYYCunL'] ,这是我尝试过的内容:

test

那很好,但我似乎无法找到摆脱左括号test1 = strsplit(test, split = "}, ") test1 = test1[[1]] 的方法,更不用说字符串的其他部分是不合需要的了。

{

理想情况下,我可以找到一些正则表达式,可以一举将所有> test2 = strsplit(test1, "{") Error in strsplit(test1, "{") : invalid regular expression '{', reason 'Missing '}'' > test2 = strsplit(test1, "\{") Error: '\{' is an unrecognized escape in character string starting ""\{" > test2 = strsplit(test1, u"{") Error: unexpected string constant in "test2 = strsplit(test1, u"{"" > test2 = strsplit(test1, r"{") Error: unexpected string constant in "test2 = strsplit(test1, r"{"" 字段提取到一个向量中。有这样的事吗?

1 个答案:

答案 0 :(得分:0)

我们可以使用正则表达式模式提取已识别的字符串:

library(stringr)
str_extract_all(test1, "(?<=objectId':\\su')(.*?)(?=')")[[1]]
[1] "mYz1ietNEt" "FVn0hE5Zar" "ZxUTYYCunL"