html - 解析 HTML NSRegularExpression

标签 html objective-c ios regex nsregularexpression

我正在尝试使用 NSRegularExpressions 解析 HTML 页面.. 该页面是此 html 代码的重复:

<div class="fact" id="fact66">STRING THAT I WANT</div> <div class="vote">
<a href="index.php?p=detail_fact&fact=106">#106</a> &nbsp; &nbsp; 
<span id="p106">246080 / 8.59  </span> &nbsp; &nbsp;
<span id="f106" class="vote2">
<a href="#" onclick="xajax_voter(106,3); return false;">(+++)</a> 
<a href="#" onclick="xajax_voter(106,2); return false;">(++)</a>  
<a href="#" onclick="xajax_voter(106,1); return false;">(+)</a> 
<a href="#" onclick="xajax_berk(106); return false;">(-)</a></span>
<span id="ve106"></span>
</div>

所以,我想获取 div 之间的字符串

 <div class="fact" id="fact66">STRING THAT I WANT</div>

所以我做了一个看起来像这样的正则表达式

<div class="fact" id="fact[0-9].*\">(.*)</div>

现在,在我的代码中,我使用以下方法实现它:

    NSString *htmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.myurl.com"] encoding:NSASCIIStringEncoding error:nil];
NSRegularExpression* myRegex = [[NSRegularExpression alloc] initWithPattern:@"<div class=\"fact\" id=\"fact[0-9].*\">(.*)</div>\n" options:0 error:nil];
    [myRegex enumerateMatchesInString:htmlString options:0 range:NSMakeRange(0, [htmlString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) {
        NSRange range = [match rangeAtIndex:1];
        NSString *string =[htmlString substringWithRange:range];
        NSLog(string);
    }];

但它什么也没返回...我在 Java 和 PHP 中测试了我的正则表达式,它工作得很好,我做错了什么?

谢谢

最佳答案

尝试使用这个正则表达式:

 @"<div class=\"fact\" id=\"fact[0-9]*\">([^<]*)</div>"

正则表达式:

fact[0-9].*

表示:事实后跟 0 到 9 之间的数字,后跟重复任意次数的任意字符。

我还建议使用:

([^<]*)

而不是

(.*)

在两个 div 之间进行匹配,以便处理正则表达式的贪婪性,或者:

(.*?)

(? 将使正则表达式变得非贪婪,因此它会在 </div> 的第一个实例处停止。

关于html - 解析 HTML NSRegularExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522008/

相关文章:

javascript - JQuery 元素 CLICK 函数 IF(对于每个 css_attribute = value)然后更改 css 值

javascript - UpdatePanel 触发时图像不显示

javascript - 如何在 HTML 5 JS Canvas 足球点球比赛中设置每次射门后的延迟

ios - Objective C float 与 int、CGPoint 与基于自定义 int 的结构性能

objective-c - iPad 应用程序在 NSOperationQueue 期间卡住

iphone - 如何使用webkit的新功能管理phonegap部署

ios - 如何使用 xcode 界面生成器向 UIButton 添加填充?

ios - 为什么不在我的 NSURLProtocol 子类中调用 startLoading?

javascript - 扩展 li 元素以适合内容

iphone - 如何在所有子类初始化后执行操作?