给定网页的 URL,我需要获取特定类的打开<div>
和关闭之间的 HTML。</div>
我认为如果我可以将页面的整个 html 代码作为字符串返回,我可以使用 RegEx 在特定<div>
类之间的 HTML 之间提取并将其作为字符串返回。
我们如何使用 Objective-C 和 RegExes 来实现这一点?
给定网页的 URL,我需要获取特定类的打开<div>
和关闭之间的 HTML。</div>
我认为如果我可以将页面的整个 html 代码作为字符串返回,我可以使用 RegEx 在特定<div>
类之间的 HTML 之间提取并将其作为字符串返回。
我们如何使用 Objective-C 和 RegExes 来实现这一点?
对于解析部分,我有 3 个字给你:
不要尝试
阅读Parsing HTML the Cthulhu Wya(由 Jeff 本人撰写)并查看这个著名的 SO 答案。对于库,使用HTML::Sanitizer
另一方面,大多数程序在解析时既不需要也不应该预测整个 HTML 领域。事实上,设计一个这样的程序很可能是一个完全错误的方法,如果它将一个程序从几行脚本更改为一个防弹的商业级程序,这需要更多数量级的时间来正确编码和支持。在创建程序化解决方案时,应始终考虑资源支出(哎呀,经常这样做,我也过于笼统了)。此外,硬边界不一定是面向 HTML 的限制。它们可以很简单,比如“使用这些网页集”、“使用这些网页中的数据”、“98% 的时间为 98% 的用户工作”,甚至“天哪,我们必须做到这一点”在接下来的一个小时内工作,尽你所能”。
因此,如果您要解析类似icanhazip的内容,则可以选择它。也许如果它很小,它可能会起作用。或者,如果您使用的是静态内容。那是你来选择的。祝你好运!
您可以检查字符串是否与正则表达式匹配NSPredicate
此代码将检查是否_test
是电子邮件地址
-(BOOL)CheckInput:(NSString *)_text
{
NSString *Regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", Regex];
return [emailTest evaluateWithObject:_text];
}