R регулярные выражения хранить переменные? - PullRequest
1 голос
/ 20 июля 2011

Можно ли использовать хранимые переменные в регулярном выражении R?

Например, я хочу удалить кавычки вокруг десятичных чисел в следующей строке s = "\"Bob\",\"1\",\"Mary\",\"2\"" - на большинстве языков вы можете сделать что-то вроде sub("\"(\d)\"","$1",s), но я не могу найти такую ​​возможность в R. Любая помощь будет принята с благодарностью.

Также в качестве дополнительного вопроса у R * есть поддержка \d? (выдает ошибку при попытке) Спасибо

1 Ответ

6 голосов
/ 20 июля 2011

Я полагаю, что это обычно называется обратной ссылкой.В 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])

Я не уверен насчет поддержки \ d в R. Обычно я просто использую [0-9] в любом случае,поскольку я знаю, что это работает, и мне легче читать.

Редактировать: @Andrie и @Richie Cotton предложили два комментария в комментариях, которые я приведу здесь для полноты.[: digits:] работает, но, на мой взгляд, предлагает мало читабельности в течение [0-9].\\ d тоже работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...