正则表达式匹配字符串的开头和结尾,忽略中间部分。

6
在R中,我应该如何创建正则表达式来匹配开头和结尾的字符串,并忽略中间的所有内容?
具体而言,我应该如何从以下内容中grep出以"./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")

我通过


grep("^\\./xl/worksheets", myfiles) # returns 4 5 6
grep("\\.xml$", myfiles) # returns 3 4 6

当然,我可以做到这一点:

which(grepl("^\\./xl/worksheets", myfiles) &
  grepl("\\.xml$", myfiles)) # returns 4 6

但是,我无法弄清楚如何在两个模式之间使用通配符。
1个回答

15

在开头和结尾之间添加匹配所有模式.*即可:

grep("^\\./xl/worksheets.*\\.xml$", myfiles) 
# [1] 4 6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接