iOS 使用正则表达式在 HTML 中查找 ID



Im 使用 NSRegularExpression 查找 HTML 中包含 40 个字符的 ID 的出现次数

这是我的代码:

 - (NSString *)stripOutHttp:(NSString *)string {
NSLog(@"the page content :: %@", string);
// Setup an NSError object to catch any failures
NSError *error = NULL;
// create the NSRegularExpression object and initialize it with a pattern
// the pattern will match any http or https url, with option case insensitive
//search for:: <input type="hidden" name="XID" value="f3f3fbafe552358d9312d1fe30670add09adc36c" />

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<input type="hidden" name="XID" value"?" options:NSRegularExpressionCaseInsensitive error:&error]; // ultimo funcional

// try /b([a-f0-9]{40})b/

// create an NSRange object using our regex object for the first match in the string 
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
// check that our NSRange object is not equal to range of NSNotFound
if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
    // Since we know that we found a match, get the substring from the parent string by using our NSRange object
    NSString *substringForFirstMatch = [string substringWithRange:rangeOfFirstMatch];
    NSLog(@"Extracted data : %@",substringForFirstMatch);
    // return the matching string
    return substringForFirstMatch;
}
return NULL;
  }

所以对于我目前的正则表达式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<input type="hidden" name="XID" value"?" options:NSRegularExpressionCaseInsensitive error:&error]; // ultimo funcional

我得到了我需要的一部分:

Extracted data : <input type="hidden" name="XID" value

现在如何获得任何 40 个字符值的响应?

我试过

// try /b([a-f0-9]{40})b/

但似乎还不明白如何使用它,

这是我之后的响应类型:

<input type="hidden" name="XID" value="f3f3fbafe552358d9312d1fe30670add09adc36c" />

多谢

你应该考虑用html或xml解析器解析整个事情(就像Blender说的那样),但现在,你的问题的答案如下:

 "<[^>]*id=DIVNAME.*?>(.*?)/>"

则表达式

 <input type="hidden" name="XID" value="([a-f0-9]{40})"[s]*/>

应与您的输入字符串匹配

我不认为这是最好的主意,一方面,你使用了很多空间,也可以使用任意空格。如果我是你,我会研究 html 解析器库。

最新更新