【问题标题】:multiple matches for NSRegularExpressionNSRegularExpression 的多个匹配项
【发布时间】:2012-07-13 10:05:33
【问题描述】:

我有以下正则表达式模式要匹配:

NSString *pattern=[NSString stringWithFormat:@"%@(.*)%@", key, key2];

所以说if key=\\\\[\\\\\[ and key2=\\\\]\\\\] 然后我得到的字符串包含 键以及包含的文本。但问题是,如果有多个匹配项,那么它只需要 key 的出现和 key2 的最后出现,并为我提供包含在这些与键之间的文本。例如:这是 [[some]] [[text]]。这给了我:[[some]] [[text]] 作为一个匹配项,而我希望 [[some]] 和 [[text]] 作为单独的匹配项。我应该如何修改它以分别给出所有匹配项?

【问题讨论】:

    标签: objective-c regex ios5 xcode4.3 nsregularexpression


    【解决方案1】:

    同样的事情困扰着想要解析引号之间的字符串的新手解析器制造商,并认为

    \\".*\\"
    

    足够了,但是当它匹配之间的所有文本时会感到惊讶

    "a string" and also "another string"
    

    这背后的原因是*运算符是贪婪。您必须使用字符集否定才能达到预期的结果:

    \\[\\[[^\\[\\]]*\\]\\]
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您的帮助,但是您能否按照我在问题中所写的 key 和 key2 格式表达它,因为我不清楚您表达中每个符号的作用?
    • 没问题,我很乐意提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多