为什么我的 iOS 正则表达式不起作用



我正在尝试从某些标签中获取所有XML(不仅是值,而是包括两个打开和关闭标签之间的更多XML)的所有内容),我想我会使用正则表达式。

我的代码看起来像这样

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);

基本上我需要"有效载荷帖子"中的所有内容,但它一直没有给我任何东西。我不断得到 0 的大小,我知道 XML 中有 3 个实例。

谁能帮我?

请确保设置多行标志,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>

最新更新