2024-09-22 13:59:19
//1.通过一个字符串建立正则表达式的Pattern(模板)
NSString *regIp = @"strOldPrivateIPvalue=(.*?)>";
//2.依据pattern(模板)建立正则表达式
/**<options 可以添加一些选项,NSRegularExpressionCaseInsensitive应该指的的是不区分大小写 */
NSRegularExpression*ipRegex搜索 = [NSRegularExpressionregularExpressionWithPattern:regIp
options:NSRegularExpressionCaseInsensitive
error:nil];
//3.进行匹配
//firstMatchInString应该指的是匹配成功一次,就结束匹配
/**<sduPage 匹配针对的目标字符串 */
/**<range 指定匹配的范围 NSMakeRange(0, [sduPage length])代表整个字符串 */
NSTextCheckingResult*ipMatch = [ipRegex firstMatchInString:sduPage options:0 range:NSMakeRange(0, [sduPage length])];
if(!ipMatch)
{
//正则匹配网址出错
return;
}
//4.获取最终结果
//NSTextCheckingResult还不是字符串,也就不是我们想要的结果,因此还要继续获取出一个NSRange
/** ipResultRange 匹配结果在目标字符串(sduPage)中的位子 */
NSRange ipResultRange = [ipMatch rangeAtIndex:0];
//得到NSRange后,依据实际请求,调用字符串的方法,来获取字符串
//从网页中截取跳转的地址
NSString *ipStr = [sduPage substringWithRange:NSMakeRange(ipResultRange.location+22,ipResultRange.length-23)];
可以了解一下正则表达式,就知道这样做是为了什么strOldPrivateIPvalue=(.*?)>这个式子中,我知道(.*?).代表任意字符,*?代表出现0次货多次,成功时取最短结果,后面的>,在正则中,不知道有没有特殊含义