将前缀19插入字符串日期

时间:2017-02-10 17:01:25

标签: r regex date

我有一个出生日期的矢量作为字符串格式" 10-Feb-85"。

当我在as.Date()中使用R函数时,它假设两位数年份是在2000之后(这些出生日期都不在2000年之后)。

例如: as.Date(x = "10-Feb-52", format = "%d-%b-%y")

返回:2052-02-10

我不熟练使用正则表达式但是 我认为这是一个正则表达式插入" 19"在第二个" - "或者在最后两位数之前。

我发现了一个正则表达式向前计算三个字符并插入一个字母:

gsub(pattern = "^(.{3})(.*)$", replacement = "\\1d\\2", x = "abcefg")

但我不确定如何从最后算起两个。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

  

在第二个“ - ”之后或最后两个数字之前插入“19”。

在最后两位数之前:

gsub(pattern = "-(\\d{2})$", replacement = "-19\\1", x = "10-Feb-52")

请参阅R demo。在这里,-首先匹配,然后是2位数((\\d{2})) - 位于字符串末尾($) - 匹配并捕获到组1中。

在第二个-之后:

gsub(pattern = "^((?:[^-]*-){2})", replacement = "\\119", x = "10-Feb-52")

another demo。这里,除了{2}-)之外的0个字符的2个序列([^-]*)从字符串的开头(^)匹配并捕获到组1中。替换包含一个反向引用,用于在替换结果中恢复捕获的文本。