2012-08-09 68 views
0

我试图从某些标记(不仅仅是值,而是包括两个打开和关闭标记之间的更多XML)中获取所有XML,并且我想要使用正则表达式。为什么我的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中有3个实例。

任何人都可以帮我吗?

回答

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 2012-08-09 22:24:19

+0

检查此问题http://stackoverflow.com/questions/6822356/capture-groups-not-working-in-nsregularexpression?rq=1 – Qnan 2012-08-09 22:28:42

+0

工作。是否有可能有1个选项? – user1515993 2012-08-09 22:40:59

相关问题