Ошибка создания / выхода из NSRegularExpression

Я хочу создать следующее регулярное выражение с NSRegularExpression: + (, |. | \ n | \ s)

Одно или несколько вхождений любого из них: запятая, точка (точка), новая строка, пробел.

Я пытался создать NSRegularExpression следующее:

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"+(,|.|\\n|\\s)" options:NSRegularExpressionCaseInsensitive error:&error];

Важным моментом является:

regularExpressionWithPattern:@"+(,|.|\\n|\\s)"

Из ссылки на класс есть эта информация об экранировании / цитировании:

Выражение символов: \

Описание: Цитирует следующий символ. Символы, которые должны быть заключены в кавычки, чтобы считаться литералами *? + [ () { } ^ $ | \ . /

Итак, я хочу . рассматриваться как буквальный. Я пробовал следующее:

+(,|\.|\\n|\\s)
+(,|\\.|\\n|\\s)

Ни одна из вышеперечисленных работ; все результат в nil за regex с NSCocoaErrorDomain а также NSInvalidValue в error,

Может кто-нибудь сказать мне, как создать регулярное выражение, которое я хочу?

Благодарю.

1 ответ

Решение

Вы могли бы иметь квантификатор + в неправильном месте. В большинстве реализаций Regex квантификатор применяется к группе / персонажу, помещая его позже, например так:

(,|\\.|\\n|\\s)+
Другие вопросы по тегам