如何在R中搜索包括反斜杠和引号的正则表达式

时间:2016-01-04 17:30:54

标签: regex r grep

我试图从使用readLines函数读取到R的相当非结构化的文本文件中提取一些文本(该文件是.json格式)。我想提取一个包含在每一行中的正则表达式,并具有以下模式:

\"text\":\" some random text \"

我知道引号和反斜杠对正则表达式至关重要,所以我对如何搜索它们感到很遗憾。我试过这个:

text <- regexpr('\\\"text\\\":\\(*?)\\\"', charactervector)

但它没有用。

有什么想法吗?提前谢谢!

3 个答案:

答案 0 :(得分:2)

或许更明确的表达方式是

text <- regexpr('^[\\]"text[\\]":[\\]" some random text [\\]"', charactervector)

这假定文字输入字符串\"text\":\" some random text \"

我确实弄清楚如何让它只使用'\'字符,但这有点难看。

修改

只是评论,我在开头添加^来锚定,但不需要。

答案 1 :(得分:1)

使用lookbehind和lookahead:

s <- '\"text\":\" some random text \"'
m <- regexpr('(?<=\\\"text\":\\\" ).*(?= \\")' , s, perl = TRUE)
regmatches(s, m)
#[1] "some random text"

答案 2 :(得分:0)

非常接近:

\\\"text\\\":\\\"(.*?)\\\"

此处示例:https://regex101.com/r/fA2pW4/2