Недопустимая ошибка диапазона символов в новой функции

У меня проблема со следующим сообщением об ошибке

недопустимое регулярное выражение '([a-Z]*)_(.*)', причина 'Недопустимый диапазон символов'

поэтому строка кода, которая вызывает ошибку,

if(tide=="long") names(problem) <- sub("([a-Z]*)_(.*)","\\2",problem)

поэтому, если для параметра tide в функции выбрано значение long, имена проблем должны быть определены ....

но когда я ввожу function(...,tide="long",..), отображается вышеупомянутое сообщение об ошибке.


person Tim Heinert    schedule 15.08.2012    source источник


Ответы (2)


Вы не можете использовать [a-Z], потому что буквы в неправильном порядке, но в любом случае лучше использовать:

[a-zA-Z]

Проблема в том, что эти диапазоны основаны на таблицах (либо ASCII, либо Unicode), но заглавная буква «Z» стоит перед строчной буквой «a», поэтому диапазон находится в неправильном порядке.

Другим решением для использования [A-z] был бы допустимый диапазон, но есть символы

[\]^_`

между буквой "Z" и буквой "a", поэтому этот диапазон будет включать символы, которые обычно не совпадают.

person stema    schedule 15.08.2012

Ваша проблема в том, что [a-Z]

Вы должны написать либо: [a-z], либо [a-zA-Z]

person Oussama Jilal    schedule 15.08.2012