昨天小洁老师在用warning信息为例,刷一波字符串技巧的文末提到如何用正则解决此问题。
今天下午决定试解:
- 先将字符串
x
逐行读取为xl
; - 包名都在
xl
的偶数行,提取之; - 最后提取每行中两个引号中间的字符:
xl <- read_lines(x)
xl <- xl[seq(2, length(xl), 2)]
gsub(".*‘([^’]*).*", "\\1", xl)
关于正则的思路,因为昨天的问题中是中文单引号,可以区分左右,故此问题可理解为,从左引号后第一个字符开始、到最后一个非右引号的字符。
若包名两侧为英文单引号,则字符串x
直接读取时报错,可先写入文件~/test
,思路与上述过程相同,正则略有不同,代码如下:
x <- read_lines("~/test")
xl <- read_lines(x)
xl <- xl[seq(2, length(xl), 2)]
gsub("[^\']*\'([^\']*).*", "\\1", xl)
网友评论