如何从r中的字符串匹配后提取字符?

时间:2018-03-19 13:59:00

标签: r regex stringr

我在包含原始json文本的数据框中有一个变量。有些观察结果有一个我想要提取的14位数字,有些则没有。如果观察结果具有以下格式的信息:

{“blur”:“10010010010010”

我想在 {“模糊”之后提取14位数字:“如果字符串的左侧部分匹配。我尝试了str_extract但我的正则表达式语法不是最好的,这里有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果它是完全形成的JSON,你可以使用JSON解析器,但假设

  • 它只是问题所示的片段,或者是完全成型的,你更喜欢使用正则表达式
  • 每个输入都有0或1次出现的数字字符串
  • 如果出现0次则使用NA

然后尝试这个。

strapply的第二个参数是正则表达式。它返回与捕获组匹配的部分,即括号内正则表达式的一部分。 empty=NA参数告诉它在没有找到任何事件时返回什么。

library(gsubfn)
s <- c('{"blur": "10010010010010"', 'abc') # test input

strapply(s, '{"blur": "(\\d+)"', empty = NA, simplify = TRUE)
## [1] "10010010010010" NA