Подтвердить что ты не робот

Экранированные периоды в регулярных выражениях R

Если я что-то не хватает, это регулярное выражение кажется довольно простым:

grepl("Processor\.[0-9]+\..*Processor\.Time", names(web02))

Однако ему не нравятся экранированные периоды, \., для которых мое намерение должно быть буквальным периодом:

Error: '\.' is an unrecognized escape in character string starting "Processor\."

Что я не понимаю о синтаксисе regex?

4b9b3361

Ответ 1

Мой R-Fu слаб, чтобы быть несуществующим, но я думаю, что знаю, что случилось.

Часть обработки строк R-процессора должна заглянуть внутрь строк, чтобы преобразовать \n и связанные с ними escape-последовательности в их эквиваленты символов. R не знает, что означает \., поэтому он жалуется. Вы хотите, чтобы сбежавшая точка попала в двигатель регулярных выражений, поэтому вам нужно получить один \ за строковым манджлером. Обычный способ сделать это - избежать побега:

grepl("Processor\\.[0-9]+\\..*Processor\\.Time", names(web02))

Встраивание одного языка (регулярных выражений) внутри другого языка (R) обычно немного беспорядочно, и тем более, когда оба языка используют один и тот же синтаксис экранирования.