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 ,要么需要双重转义。 (我认为您认为星号是通配符,但事实并非如此。)
我有包含大量数据的文件,但其中一些文件的日期格式如下: 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 ,要么需要双重转义。 (我认为您认为星号是通配符,但事实并非如此。)