2010-11-10 3 views
2

Я пытаюсь создать регулярное выражение, которое соответствует, когда строка начинается с 1 или более алфавитных символов, после чего ровно 1 ? и заканчивая 1 или более алфавитных символовСоздать регулярное выражение для пользовательского формата

Я до сих пор составляет

[A-Za-z]+\?{1}[A-Za-z]+ 

, но это приводит к сбою моей программы. Есть идеи? Спасибо за любые ответы.

ОБНОВЛЕНО

Вот исключение:

 
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 
'Can't do regex matching, reason: (Can't open pattern U_REGEX_RULE_SYNTAX 
(string fe?ing, pattern [A-Za-z]+?{1}[A-Za-z]+, case 0, canon 0))' 

Кажется, игнорируя характер ускользания для?

+2

Каковы симптомы аварии, и, пожалуйста, напишите больше кода, который его вызывает. Регулярное выражение выглядит нормально (хотя вам не нужно {1}, так как просто положить \? Означает совпадение с литералом?). Вы пробовали с более простым регулярным выражением, чтобы проверить, что это не вызывающий код, который виноват? –

+0

если я заменил? с 1, тогда регулярное выражение отлично работает. Он будет соответствовать строкам, как fas1ing правильно. – aahrens

ответ

2

Это выглядит правильно. Может быть, снять «{1}», но он работает с выражениями Perl, когда я его пытаюсь.

Попробуйте сделать это: если вы положили "?" в класс символов, чтобы увидеть, можете ли вы выйти из крушения.

[A-Za-z]+[?][A-Za-z]+ 
+0

@aahrens дайте мне знать, если мой второй вариант работает для вас. – Keng

+0

Это сработало !. Спасибо Кэн. – aahrens

1

Попробуйте использовать 2 обратные косые черты.

@"[A-Za-z]+\\?[A-Za-z]+" 

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