我正在尝试从大型文本文件中提取多个sql查询。查询都以报告标题开头,然后是这样的SQL代码( {" app":),并以此结束(" cid" :)。我对正则表达式非常新,并且对于何时使用转义字符等没有扎实的把握。我在R中使用qdapRegex包中的ex_between()函数,我的代码如下。
sql2 <- ex_between(sql, left = "{/"app/":", right = "/"cid/":", extract = T,
include.markers = T)
有人会介意纠正我的代码或指向正确的方向吗?
非常感谢你的时间。
答案 0 :(得分:1)
您可以按照以下模式使用str_extract_all
软件包中的stringr
:
library(stringr)
str_extract_all(x, "(?s)(?<=\\{\"app\":).*?(?=\"cid\":)")
请参见regex demo。 str_extract_all
返回在每个字符串中找到的所有模式匹配。
详细信息
(?s)
-DOTALL修饰符,使.
能够匹配换行符(?<=\\{\"app\":)
-与字符串中紧随{"app":
子字符串前面的位置匹配的正向后缀.*?
-任意0个以上的字符,尽可能少(?=\"cid\":)
-当前位置右侧的正向前进,要求出现"cid":
文本。