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

时间:2018-06-03 16:52:06

标签: r regex

在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")

我成功了

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 个答案:

答案 0 :(得分:5)

只需在开头和结尾之间添加匹配所有模式xml.etree.ElementTree即可:

$ awk '{rec = rec $0 ORS} /{content-end}/{if (++cnt == 2) printf "%s", rec; rec=""}' file
{content-start}
abc2
def2
ghi2
{content-end}