在NSString中搜索模式

时间:2013-01-09 09:57:21

标签: iphone objective-c pattern-matching nsregularexpression

我想在字符串中搜索模式。在下面的代码中,模式字符串'*'可以是任何字符。

我从here获得了此示例代码,但它对我不起作用。

NSString *string;
NSString *pattern;
NSRegularExpression *regex;


string = @"img=img_1.png or it can be img=img.png";
pattern = @"img=*.png";

regex = [NSRegularExpression
         regularExpressionWithPattern:pattern
         options:NSRegularExpressionCaseInsensitive
         error:nil];

NSArray *matches = [regex matchesInString:string
                                  options:0
                                    range:NSMakeRange(0, [string length])];

NSLog(@"matches - %@", matches);

for (NSTextCheckingResult *match in matches)
{
    NSRange range = [match rangeAtIndex:1];
    NSLog(@"match: %@", [string substringWithRange:range]);
}

我希望optput字符串为img_1.png& img.png

2 个答案:

答案 0 :(得分:1)

将您的模式更改为:

pattern = @"img=(.*?).png";

答案 1 :(得分:0)

这种模式可以很好地运作:

NSString *pattern = @"(img=img[\\S]*\\.png)";

比赛是:

0 : {0, 13} - img=img_1.png
1 : {27, 11} - img=img.png

另一种模式:

NSString *pattern = @"(img[^=][\\S]*png)";

匹配是(没有 img = 部分):

0 : {4, 9} - img_1.png
1 : {31, 7} - img.png