需要在R中提供正则表达式解决方案的帮助吗

需要在R中提供正则表达式解决方案的帮助吗,r,regex,string,R,Regex,String,我有几个日期需要转换。然而,我无法获得正则表达式,但这是我的另一种尝试,它可以工作,但不必要的长 库(stringr) #日期字符串向量,只能出现两个场景 日期你可以试试这个。它在三个捕获组中捕获日、月和时间,并返回一个符合strtime的字符串: strptime(gsub("^(\\d+)\\w+ of (\\w+) (.*)$", "\\1 \\2 \\3", date), "%d %B %H:%M") #> [1] "2020-06-03 18:09:00 BST" "2020-0

我有几个日期需要转换。然而,我无法获得正则表达式,但这是我的另一种尝试,它可以工作,但不必要的长

库(stringr)
#日期字符串向量,只能出现两个场景

日期你可以试试这个。它在三个捕获组中捕获日、月和时间,并返回一个符合
strtime
的字符串:

strptime(gsub("^(\\d+)\\w+ of (\\w+) (.*)$", "\\1 \\2 \\3", date), "%d %B %H:%M")
#> [1] "2020-06-03 18:09:00 BST" "2020-01-22 22:19:00 GMT"

解释

  • ^(\\d+)
    捕获字符串的前导数字
  • \\w+of
    匹配但不捕获
    th of
    rd of
  • (\\w+)
    捕获完整的月份名称
  • (.$)$
    捕获最后一个空格后的所有内容

“\\1\\2\\3”
表示将每个字符串替换为以空格分隔的三个捕获组,例如
“03 June 18:09”
。然后,我们可以使用
strtime
捕获这一点,使用
%d
表示日期,
%B
表示月份,
%H:%M
表示时间。

lubridate
包含一些转换和解析日期的函数。值得一看。嘿,我在里面找不到合适的函数。我确实查阅了它的文档:(老兄……看,简化成一行。你们为什么这么聪明?非常感谢。你们能对正则表达式做一点解释吗?如果可以的话:)非常感谢你们添加了一个非常详细的解释,先生:)