在R中使用regex来替换基于模式的一些数字

时间:2011-03-04 03:38:05

标签: regex r

我正在尝试在4位数后添加时间戳(4位数为年),我目前正在使用以下代码:

 temp.table[,"admission_datetime"] <- gsub("/2010$", "/2010 0:00:00", temp.table[,"admission_datetime"])
 temp.table[,"admission_datetime"] <- gsub("/1976$", "/1976 0:00:00", temp.table[,"admission_datetime"])
 temp.table[,"admission_datetime"] <- gsub("/1990$", "/1990 0:00:00", temp.table[,"admission_datetime"])
 temp.table[,"admission_datetime"] <- gsub("/1978$", "/1978 0:00:00", temp.table[,"admission_datetime"])

代码对我来说很好,但有点笨拙且不灵活,我知道我可以使用[0-9]{4}捕获1976,1978,1990,2010,但我不知道如何使用它们正则表达式,谁能开导我?感谢。

3 个答案:

答案 0 :(得分:4)

这应该有效:

temp.table[,"admission_datetime"] <- gsub("/([0-9]{4})$", "/\\1 0:00:00", temp.table[,"admission_datetime"])

答案 1 :(得分:1)

如果将模式括在括号中,则可以使用\ 1,\ 2等在替换中引用它,具体取决于您要返回的表达式:

gsub("/([0-9][0-9][0-9][0-9])$","\\1 0:00:00","1/21/1985")

更复杂的变种是可能的:

gsub("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3 0:00:00","1/21/1985")

答案 2 :(得分:1)

尝试使用这些3 awesome must-know网站中的任何一个,以帮助找到所需的任何REGEX:

http://gskinner.com/RegExr/

http://lumadis.be/regex/test_regex.php

http://cs.union.edu/~hannayd/csc350/simulators/RegExp/reg.htm