【问题标题】:Why is my iOS Regular Expression not working?为什么我的 iOS 正则表达式不起作用?
【发布时间】:2012-08-07 05:25:42
【问题描述】:

我正在尝试从某些标签中获取所有 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);

基本上我需要“PayloadPost”中的所有内容,但它一直没有给我任何东西。我一直得到 0 的大小,我知道 XML 中有 3 个实例。

谁能帮帮我?

【问题讨论】:

    标签: ios xml regex nsregularexpression


    【解决方案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>
    

    【讨论】:

    • 好吧,在我在星号后面加了一个问号之后,它就不会贪婪了。现在我需要做的就是弄清楚如何使字符串不包括“”和“”。这包括多个选项,但主要是摆脱有效载荷。感谢您的帮助。
    • “多个”选项?.. 你到底是什么意思?
    • 对同一个 NSRegularExpression 说点匹配线分隔符和不区分大小写的选项。
    • 我认为它们应该使用按位或运算符组合,如NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 2015-04-13
    • 2014-06-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多