Iphone NSRegularExpression和preg之间的差异
我一直在努力使用NSRegularExpression,与我不知道的Regex有什么主要区别吗 我正在尝试:Iphone NSRegularExpression和preg之间的差异,iphone,objective-c,regex,nsstring,nsregularexpression,Iphone,Objective C,Regex,Nsstring,Nsregularexpression,我一直在努力使用NSRegularExpression,与我不知道的Regex有什么主要区别吗 我正在尝试: NSString *str = @"&url=http%3A%2F%2Fi.hello.com/random/depeth/in/string.JPG%3Fset_id" NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression
NSString *str = @"&url=http%3A%2F%2Fi.hello.com/random/depeth/in/string.JPG%3Fset_id"
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"i(.+?)%3Fset_id"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:str
options:0 range:NSMakeRange(0, [str length])];
我希望rangeOfFirstMatch的范围为.hello.com/random/depeth/in/string.JPG
regex“i(+?)%3Fset_id”在preg中似乎运行良好
有点迷路了
提前感谢。
rangeOfFirstMatchInString:…
没有达到预期效果:它会在整个正则表达式的字符串中找到第一个匹配项。您想要的是:
NSTextCheckingResult *result = [regex firstMatchInString:Str options:0 range:NSMakeRange(0, [Str length])];
NSRange rangeOfFirstSubexpression = [result rangeAtIndex:1];
NSString *firstSubexpression = [Str substringWithRange:rangeOfFirstSubexpression];
(还要注意,将非全局非常量大写不是Cocoa惯例,尽管这显然不会破坏您的代码。)谢谢,我将对此进行测试。我知道我使用Str是因为我刚刚拼凑了一些代码,并且在声明时错误地将其大写。谢谢,这非常有效。下次我会更仔细地阅读文档,不用担心。很高兴我能帮忙!