2013-12-06 1 views
0

У меня есть следующая строка:Почему мой шаблон NSRegularExpression не работает?

NSString *string = @"she seemed \x3cem\x3ereluctant\x3c/em\x3e to discuss the matter"; 

Я хочу окончательная строка будет: "she seemed reluctant to discuss the matter"

Я следующая закономерность:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"/\\x[0-9a-f]{2}/" 
                      options:NSRegularExpressionCaseInsensitive 
                      error:&error]; 

NSArray *matches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])]; 
for (NSTextCheckingResult *match in matches) { 
    NSRange matchRange = [match range]; 
    NSLog(@"%@", NSStringFromRange(matchRange)); 
} 

Однако я получаю сообщение об ошибке говорящее шаблон является недействительным. Что я делаю не так?

+0

Довольно уверен, Objective C Безразлично» t нужен // разделитель, попробуйте без? – brandonscript

+0

@ r3mus вы имеете в виду '\\ x [0-9a-f] {2}'? Все еще не работает: 'NSInvalidValue = \ x [0-9a-f] {2}}' – Snowman

+0

Даже '\\ x' не работает:' NSInvalidValue = \ x' – Snowman

ответ

1

Узор вам нужно:

@"\\\\x[0-9a-f]{2}" 

обратной косой является особенным для обоих Obj-C и RE синтаксический анализатор - так что вам нужно, чтобы создать строку Obj-C с двумя \ 's так РЗ парсер может затем оказаться в одном.

Также в строке нет открытых/закрывающих разделителей - вы думаете о другом языке программирования там!

+0

Огромное спасибо, что сработало. Скажем, теперь у меня строка 'emchair/em'. Каким будет шаблон, который приведет только к «стулу», то есть к удалению em и/em? – Snowman

+0

Я подозреваю, что ваш комментарий потерял несколько персонажей ... Несмотря на то, что у вас есть проблемы, и если он не работает, задайте другой вопрос, показывающий, что вы пытались, - и укажите, что вы пытаетесь сопоставить (просто * chair * tag/text/close-tag, вы ожидаете вложенные теги и т. д.) – CRD

+0

Ок, см. http://stackoverflow.com/questions/20415565/regex-pattern-to-find-occurrences-of-html-tags – Snowman

-1

Вы можете сэкономить несколько регулярных выражений проблемы с помощью метода NSString

stringByReplacingOccurrencesOfString: withString:

Или

stringByReplacingOccurrencesOfString: withString: варианты: Диапазон:

+0

Если это помогает, эти методы используют то же самое под капотом. – uchuugaka