2012-08-09 2 views
0

Я пытаюсь получить все XML из определенных тегов (а не только значений, но все, включая XML, между двумя тегами open и close), и я решил, что буду использовать регулярное выражение.Почему мое стандартное выражение iOS не работает?

Мой код выглядит следующим образом

NSError *error2 = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<PayloadPost>(.*)</PayloadPost>" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:&error2]; 
if (error2) 
{ 
    NSLog(@"Error %@", [error2 description]); 
} 

NSArray *payloadRanges=[regex matchesInString:theXMLString options:0 range:NSMakeRange(0, [theXMLString length])]; 
int size=[payloadRanges count]; 
printf("Size %d",size); 

В принципе мне нужно все, что в «PayloadPost» с и до сих пор он держит не дает мне ничего. Я продолжаю получать 0 для размера, и я знаю, что в XML есть три экземпляра.

Может ли кто-нибудь помочь мне?

ответ

1

убедитесь, что вы установите флаг многострочного, https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSRegularExpressionDotMatchesLineSeparators

иначе ". символ не будет соответствовать разрыв строки и ваше регулярное выражение будет соответствовать

<PayloadPost>something</PayloadPost> 

но не

<PayloadPost> 
something 
</PayloadPost> 
+0

Ну что работал, после того, как я добавил в знак вопроса после того, как звездочки, поэтому было бы не жадный. Теперь все, что мне нужно сделать, это выяснить, как заставить строки не включать «» и « user1515993

+0

проверьте это http://stackoverflow.com/questions/6822356/capture-groups-not-working-in-nsregularexpression?rq=1 – Qnan

+0

Это сработало. Возможно ли иметь вариант> 1? – user1515993

Смежные вопросы