我正在编写一个iPhone应用程序,必须从网站上提取原始HTML数据,抓取链接的网址和链接的显示文本。
例如,在<a href="www.google.com">Click here to go to google</a>
它会抓住 url = www.google.com text =点击此处转到Google
我正在使用regexlite库,但我绝不是正则表达式方面的专家,我已经尝试了几个方法来实现这一点。
我想使用以下代码
NSString *searchString = @"$10.23, $1024.42, $3099";
NSString *regexString = @"\\$((\\d+)(?:\\.(\\d+)|\\.?))";
NSArray *capturesArray = NULL;
capturesArray = [searchString arrayOfCaptureComponentsMatchedByRegex:regexString];
所以我的问题是有人可以告诉我searchString将解析html链接是什么或者指向一个关于regexlite如何工作的清晰教程我已经厌倦了阅读http://regexkit.sourceforge.net/RegexKitLite/的文档并且我不明白它。< / p>
提前致谢,
Zen_silence
答案 0 :(得分:4)
简而言之,不要这样做。正则表达式是解析HTML的一种可怕方式。 HTML文档是高度结构化的,具有标记层次结构,其内容可以跨越线条而不会在呈现的形式中出现所述线条。
假设结构良好的HTML,您可以使用XML解析器。
特别是,iPhone提供了NSXMLParser以及其中一些很好的使用示例。
答案 1 :(得分:0)
searchString将是整个原始HTML文本,regexString应该更像:
NSString *regexString = @"href=\"(.*)\">(.*)<";
然后您将使用捕获匹配来拉出match1和match2,使用Range选项通过HTML文本重复匹配以进行搜索,以便您跳过已经搜索过的内容...
我不知道你在尝试用searchString和数字做什么。
答案 2 :(得分:0)
如果其他人有同样的问题,那么匹配html链接的正则表达式字符串是
NSString *regexString = @"<a href=([^>]*)>([^>]*) - ";
Oreilly的书“掌握正则表达式”帮助我快速解决这个问题,如果你正在尝试使用正则表达式,我强烈推荐阅读。