在R中,如何创建匹配开始和结束字符串的正则表达式,而忽略两者之间的所有内容?
具体来说,如何从以下字符串中查找以“ ./xl/worksheets”开头并以“ .xml”结尾的字符串?
myfiles <- c("./_rels/.rels", "./xl/_rels/workbook.xml.rels",
"./xl/workbook.xml", "./xl/worksheets/sheet4.xml",
"./xl/worksheets/_rels/sheet1.xml.rels", "./xl/worksheets/sheet2.xml",
"./xl/printerSettings/printerSettings11.bin")
Run Code Online (Sandbox Code Playgroud)
我成功了
grep("^\\./xl/worksheets", myfiles) # returns 4 5 6
grep("\\.xml$", myfiles) # returns 3 4 6
Run Code Online (Sandbox Code Playgroud)
当然,我可以这样做:
which(grepl("^\\./xl/worksheets", myfiles) &
grepl("\\.xml$", myfiles)) # returns 4 6
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何在两种模式之间进行通配符处理。
只需.*在开始和结束之间添加一个全部匹配模式即可:
grep("^\\./xl/worksheets.*\\.xml$", myfiles)
# [1] 4 6
Run Code Online (Sandbox Code Playgroud)