我需要按以下格式解析网址:
http://www.example.com/?method=example.method&firstKey=firstValue&id=1893736&thirdKey=thirdValue
我需要的是& id = 1893736 中 1893736 的值。
我需要在Objective-C中为我的iPhone项目进行解析。我知道它必须与正则表达式有关。但我不知道该怎么做。
任何建议将不胜感激。 :)
答案 0 :(得分:1)
你不需要正则表达式。你可以试试这样的东西
NSString *url = @"http://www.example.com/?method=example.method&firstKey=firstValue&id=1893736&thirdKey=thirdValue";
NSString *identifier = nil;
for (NSString *arg in [[[url pathComponents] lastObject] componentsSeparatedByString:@"&"]) {
if ([arg hasPrefix:@"id="]) {
identifier = [arg stringByReplacingOccurrencesOfString:@"id=" withString:@""];
}
}
NSLog(@"%@", identifier);
答案 1 :(得分:1)
使用this:
.*/\?(?:\w*=[^&]*&)*?(?:id=([^&]*))(?:&\w*=[^&]*)*
并抓住第一组:\1
。您将获得1893736
。
如果id
只能由数字组成:
.*/\?(?:\w*=[^&]*&)*?(?:id=(\d*))(?:&\w*=[^&]*)*
如果你不关心捕捉不感兴趣的群体(在这种情况下 use \3
或id
):
.*/\?(\w*=.*?&)*?(id=(?<id>\d*))(&\w*=.*)*
More simpler 版本(使用\3
):
.*/\?(.*?=.*?&)*(id=(\d*))(&.*?=.*)*
答案 2 :(得分:1)
不要使用正则表达式。使用NSURL
可靠地提取查询字符串,然后使用use this answer's code来解析查询字符串。
答案 3 :(得分:0)
您可以拆分NSURL实例的字符串表示,而不是使用正则表达式。在您的情况下,您可以通过appersand(&amp;)拆分字符串,循环查找前缀(id =)的数组,并从索引2获取子字符串(这是=结束的位置)。