Regex 提取字符串的月份
我需要从以下格式的一系列字符串中提取月份:Regex 提取字符串的月份,regex,r,date,Regex,R,Date,我需要从以下格式的一系列字符串中提取月份: Tue Jan 05 03:29:10 CET 2016 我试过: #extracting the second capturing group sub("([A-z]{3})\\s([A-z]{3})","\\2","Tue Jan 05 03:29:10 CET 2016") #or just the first whitespace with the Month: sub("\\s([A-z]{3})","\\2","Tue Jan 05 0
Tue Jan 05 03:29:10 CET 2016
我试过:
#extracting the second capturing group
sub("([A-z]{3})\\s([A-z]{3})","\\2","Tue Jan 05 03:29:10 CET 2016")
#or just the first whitespace with the Month:
sub("\\s([A-z]{3})","\\2","Tue Jan 05 03:29:10 CET 2016")
在这种情况下,我的预期输出是:
"Jan"
您需要匹配整个字符串,并将所需内容捕获到捕获组中,以便稍后通过反向引用恢复其值 使用 该模式意味着:
-匹配字符串的开头^
-匹配3个字母[[:alpha:]{3}
-匹配1+空格\\s+
-将三个字母作为一个单词匹配并捕获到第1组中(([[:alpha:]{3})\\b
是一个单词边界标记)\b
-0+任何字符(直到字符串末尾)*
另外请注意。您需要匹配整个字符串,并将所需内容捕获到捕获组中,以便稍后通过反向引用恢复其值 使用 该模式意味着:
-匹配字符串的开头^
-匹配3个字母[[:alpha:]{3}
-匹配1+空格\\s+
-将三个字母作为一个单词匹配并捕获到第1组中(([[:alpha:]{3})\\b
是一个单词边界标记)\b
-0+任何字符(直到字符串末尾)*
另外请注意。或者我们可以使用
lubridate
中的month()
函数,前提是我们首先将字符串转换为日期
对象
library(lubridate)
month(as.Date("Tue Jan 05 03:29:10 CET 2016", "%a %b %d"), label = TRUE)
#[1] Jan
或者在@HaddE.Nuff建议的base
R中:
format(as.Date("Tue Jan 05 03:29:10 CET 2016", "%a %b %d"), "%b")
或者我们可以使用
lubridate
中的month()
函数,首先将字符串转换为Date
对象
library(lubridate)
month(as.Date("Tue Jan 05 03:29:10 CET 2016", "%a %b %d"), label = TRUE)
#[1] Jan
或者在@HaddE.Nuff建议的base
R中:
format(as.Date("Tue Jan 05 03:29:10 CET 2016", "%a %b %d"), "%b")
一个非常直观的建议。这将匹配一个月的前三个字母。可能不适用于所有情况,但很容易想到
> aa <- regexpr("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec","Tue Jan 05 03:29:10 CET 2016")
> regmatches("Tue Jan 05 03:29:10 CET 2016",aa)
#[1] "Jan"
>aa注册比赛(“2016年欧洲中部时间1月5日星期二03:29:10”,aa)
#[1] “一月”
一个非常直观的建议。这将匹配一个月的前三个字母。可能不适用于所有情况,但很容易想到
> aa <- regexpr("Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec","Tue Jan 05 03:29:10 CET 2016")
> regmatches("Tue Jan 05 03:29:10 CET 2016",aa)
#[1] "Jan"
>aa注册比赛(“2016年欧洲中部时间1月5日星期二03:29:10”,aa)
#[1] “一月”
试试这个sub
:
sub("... (...).*", "\\1", "Tue Jan 05 03:29:10 CET 2016")
## [1] "Jan"
尝试此
子项
:
sub("... (...).*", "\\1", "Tue Jan 05 03:29:10 CET 2016")
## [1] "Jan"
只有当我们总是在英语环境下,@HaddE.Nuff同意,你的建议才更一般。只有当我们总是在英语环境下,@HaddE.Nuff同意,你的建议才更一般。我们不能只做
个月(截至日期(“2016年欧洲中部时间1月5日星期二03:29:10”,“a%b%d”)
也从基数R?或个月.abb[as.POSIXlt](“2016年1月5日星期二03:29:10 CET”,format=“%a%b%d”)$mon+1]
@DavidArenburgPOSIXlt
对我来说总是很可怕,因为它们是如此巨大的物体……我们不能只做个月(截止日期(“2016年1月5日星期二03:29:10 CET”、%a%b%d”)
也从R开始?或者month.abb[as.POSIXlt(“2016年1月05:29:10 CET”,format=“%a%b%d”)$mon+1]
@DavidArenburgPOSIXlt
对我来说总是很可怕,因为它们是如此巨大的物体。。。