Невозможно создать NSRegularExpression из-за Не удалось создать (метатип) escape NSRegularExpression

Я пытаюсь создать следующий NSRegularExpression (я пытаюсь найти все запятые ,, левые скобки (, правые скобки ) и обратную косую черту \):

var error: NSError?
NSRegularExpression(pattern: "[,\\(\\)\\]", options: nil, error: &error)

Но он возвращает .None со следующей ошибкой:

Couldn't create (Metatype) escape NSRegularExpression

И следующее userInfo:

NSInvalidValue: "[,\(\)\]"

Что это значит?


person Heath Borders    schedule 24.02.2015    source источник


Ответы (1)


Мой литерал обратной косой черты внутри класса символов не был должным образом экранирован. Он использовал две обратные косые черты внутри строкового литерала вместо четырех.

var error: NSError?
NSRegularExpression(pattern: "[,\\(\\)\\]", options: nil, error: &error)

Должно быть:

var error: NSError?
NSRegularExpression(pattern: "[,\\(\\)\\\\]", options: nil, error: &error)

Я думаю, что ошибка Couldn't create (Metatype) escape относится к не полностью скрытой обратной косой черте, ведущей к экранированию последней квадратной скобки, что делает определение класса символов недействительным.

person Heath Borders    schedule 24.02.2015