0
//string
NSString *haystack = @".test {test:test} .test2{dasf:asdF}";
//pattern
 NSString *needle = @"[^{}]*{[^{}]*}";

我想要的是数组中的 .test {test:test} 和 .test2{dasf:asdF} (其余代码处理这个),但由于某种原因,这个正则表达式无法正常工作,因为没有找到结果。

如果

NSString *needle = @"[^{}]*";

我得到以下

(
".test ",
"",
"test:test",
"",
" .test2",
"",
"dasf:asdF",
"",
""
)

这是预期的。经过大量的摆弄之后,正则表达式中的 { 和 } 似乎有问题,但我想不出为什么。

顺便说一句,如果有人能解释为什么我在上面的数组中得到这些空元素,那也很有用。

谢谢!

4

2 回答 2

1

您是否尝试过 [^{}]+(带加号)而不是 [^{}]*?只是因为 * 也匹配零个字符

于 2012-06-16T09:17:03.297 回答
0

你会尝试使用:

 NSString *needle = @"[^{}]*\{[^{}]*\}";

确实,{并且}在正则表达式中具有特殊含义(但在使用时它们会“自动”转义[]

于 2012-06-16T09:21:04.337 回答