R 中的 Grep(零或任何字符)

Grep in R (zero or any character)

我有包含大量数据的文件,但其中一些文件的日期格式如下: YYYYMMDD,f。 e. 20150704

其他日期的格式是这样的: YYYY-MM-DD,f。 e. 2015-07-04

我想 grep 查找具体日期,我可以通过一个 grep 来完成这两个示例吗?

我试过这个:

grep("*07*04",file)

还有这个

grep(".07.04",file)

第二种形式适用于 YYYY-MM-DD 这种格式,但不适用于 YYYYMMDD

有没有办法通过一个 grep 来做到这一点?

尝试

grep('-?07-?04$', str1)

数据

 str1 <- c('2015-07-04', '20150704', '2014-08-07', '20150407',
          '2015-07-14', '2015-01-04')

另一种解决方案是先使用gsub

str1 <- c('2015-07-04', '20150704', '2014-08-07', '20150407',
       '2015-07-14', '2015-01-04')

grep('*0704',gsub("-","",str1))

这看起来很简单:

grep('07-*04',str1)

星号表示 "zero or more times" 表示紧邻其左侧的字符或组。幸运的是破折号不是特殊的正则表达式符号。如果是这样,您要么需要使用方括号来构成字符 class ,要么需要双重转义。 (我认为您认为星号是通配符,但事实并非如此。)