R中的Regex:尝试使用qdapRegex包

时间:2018-06-18 15:11:24

标签: r regex

我正在尝试从大型文本文件中提取多个sql查询。查询都以报告标题开头,然后是这样的SQL代码( {" app":),并以此结束(" cid" :)。我对正则表达式非常新,并且对于何时使用转义字符等没有扎实的把握。我在R中使用qdapRegex包中的ex_between()函数,我的代码如下。

sql2 <- ex_between(sql, left = "{/"app/":", right = "/"cid/":", extract = T, 
     include.markers = T)

有人会介意纠正我的代码或指向正确的方向吗?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:1)

您可以按照以下模式使用str_extract_all软件包中的stringr

library(stringr)
str_extract_all(x, "(?s)(?<=\\{\"app\":).*?(?=\"cid\":)")

请参见regex demostr_extract_all返回在每个字符串中找到的所有模式匹配。

详细信息

  • (?s)-DOTALL修饰符,使.能够匹配换行符
  • (?<=\\{\"app\":)-与字符串中紧随{"app":子字符串前面的位置匹配的正向后缀
  • .*?-任意0个以上的字符,尽可能少
  • (?=\"cid\":)-当前位置右侧的正向前进,要求出现"cid":文本。