我有一个出生日期向量作为字符串格式的"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")
但我不知道怎么从最后数到第二。
任何帮助都是非常感谢的。
发布于 2017-02-10 09:05:44
在第二位后插入"19“-”或在最后两位数字之前插入“19”。
在最后两位数之前:
gsub(pattern = "-(\\d{2})$", replacement = "-19\\1", x = "10-Feb-52")
见R演示。在这里,首先匹配-
,然后匹配字符串末尾的两个数字((\\d{2})
) ($
),并将其捕获到第1组中。
在第二个-
之后
gsub(pattern = "^((?:[^-]*-){2})", replacement = "\\119", x = "10-Feb-52")
见另一个演示。这里,除了{2}
([^-]*
)之外,0+字符的2个序列( -
([^-]*
))从字符串(^
)的开始被匹配,并被捕获到第1组中。替换包含一个反向引用,该引用在替换结果中恢复捕获的文本。
https://stackoverflow.com/questions/42164785
复制相似问题