R正则表达式存储变量?

时间:2011-07-20 05:41:10

标签: regex r variables

是否可以在R的正则表达式中使用存储的变量?

例如,我想删除以下字符串s = "\"Bob\",\"1\",\"Mary\",\"2\""中的十进制数字周围的引号 - 在大多数语言中,您可以执行类似sub("\"(\d)\"","$1",s)的操作,但我似乎无法在R中找到该功能。任何帮助都会非常感谢。

另外作为一个附带问题,R是否有\d支持? (当我尝试时它会抛出一个错误)谢谢

1 个答案:

答案 0 :(得分:6)

我相信这通常被称为反引用。在R中,您可以使用\\ 1 \\ 2等

re.examples <- c(
    'What_are_we_doing?',
    'Woe, that a young fowl should fly the coop',
    '2011/12/24',
    'Subject: More information, then less important stuff.' 
)

sub("([0-9]+)/([0-9]+)/([0-9]+)","Year is \\1 Month is \\2 Day is \\3",re.examples[3])
sub("^([A-Za-z ]+): ([A-Za-z ]+), ([A-Za-z ]+).$","\\2",re.examples[4])

我不确定在R中支持\我通常只使用[0-9],因为我知道它有效并且我觉得它更容易阅读。

编辑:@Andrie和@Richie Cotton都在评论中提出了两条建议,为了完整起见,我将在此处加入。 [:digits:]有效,但在我看来,[0-9]的可读性很少。 \\ d也可以。