我有以下正则表达式匹配:
NSString *pattern=[NSString stringWithFormat:@"%@(.*)%@", key, key2];
所以说if key=\\\\[\\\\\[ and key2=\\\\]\\\\]
然后我得到包含的字符串
键和包含的文本。但问题是,如果有多个匹配,那么它只需要关键字的出现和key2的最后一次出现,并给出包含在键和键之间的文本。例如:这是[[some]] [[text]]。这给了我:[[some]] [[text]]
作为一个匹配,而我希望[[some]]
和[[text]]
作为单独的匹配。我应该如何修改它以单独给出所有匹配?
答案 0 :(得分:1)
同样的事情困扰新手解析器制造商,他们想在引号之间解析字符串,并认为
\\".*\\"
就足够了,但是当匹配
之间的所有文本时,会感到惊讶"a string" and also "another string"
背后的原因是*运算符是 greedy 。您必须使用字符集否定来实现预期结果:
\\[\\[[^\\[\\]]*\\]\\]
希望这有帮助。