2014-02-24 2 views
0

Я хочу создать следующее регулярное выражение с NSRegularExpression: + (, | | \ п | \ s.)NSRegularExpression Создания/Экранирование Ошибки

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

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

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

Важный бит являются:

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

Из class reference, есть эта информация о побеге/процитировать:

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

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

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

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

Ничего из перечисленного не работает; все результаты в nil для regex с NSCocoaErrorDomain и NSInvalidValue в error.

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

Спасибо.

+1

Я не очень знаком с nsregularexpression, но это может быть, что у вас есть квантор '+' в неправильное место? В большинстве реализаций Regex квантификатор применяется к группе/символу, помещая его потом: '(, | \\. | \\ n | \\ s) +' – JonM

ответ

1

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

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

Спасибо! Впервые я использовал NSRegularExpression, но также (явно) долгое время с тех пор, как я использовал регулярное выражение вообще;) –