背景:
我有这样的回应(请注意新行):
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = 180
EXT:
LOCATION: http://172.16.16.16:80/upnp.jsp
SERVER: Linux/2.6.32.24 UPNP/1.0 ZD3025/9.5.1.0
ST: upnp:rootdevice
USN: uuid:6e4bb543-fff6-4384-a4be-::upnp:rootdevice
我想匹配 Server 行,它是:
Linux/2.6.32.24 UPNP/1.0 ZD3025/9.5.1.0
执行:
我不关心上面给出的响应中的任何字符,除了字符 Linux、UPNP 和 ZD(按此顺序)。
所以我使用 .* 来匹配任意数量的字符、数字、特殊字符。
-(void) regexCompareForUPnP:(NSString *) string {
NSError * err = nil;
//Building expression
NSString *expression = @"^.*Linux.*UPNP.*ZD.*$";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:expression options:0 error:&err];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:string
options:0
range:NSMakeRange(0, [string length])];
NSLog(@"Matches found: %d", numberOfMatches);
}
到目前为止,找到的匹配项:0。
问题:
所以,简而言之,这样做:
NSString *expression = @"^.*Linux.*UPNP.*ZD.*$";
匹配这个:
Linux/2.6.32.24 UPNP/1.0 ZD3025/9.5.1.0
编辑:
- 谢谢 omz,效果很好。
- 现在我正在尝试匹配 upnp.jsp(在 LOCATION 行中)以及我之前尝试匹配的内容。所以我尝试了这个:
NSString *表达式 = @"^.*upnp.jsp\n.*Linux.*UPNP.ZD. $ ";
那是行不通的。感谢你的帮助..