背景:
次のような応答があります(新しい行に注意してください):
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
次のサーバー行に一致させたいと思います。
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に感謝します。
- 今、私は以前に一致させようとしていたものと一緒に、(LOCATION 行の) upnp.jsp を一致させようとしています。だから私はこれを試しました:
NSString *expression = @"^.*upnp.jsp\n.*Linux.*UPNP.ZD. $ ";
それはうまくいきません。あなたの助けに感謝..