代码之家  ›  专栏  ›  技术社区  ›  Zen_silence

使用regexlite从NSString中解析<a href src=”“>链接

  •  0
  • Zen_silence  · 技术社区  · 16 年前

    比如说 <a href="www.google.com">Click here to go to google</a>

    它会抓住你 url=www.google.com

    我正在使用regexlite库,但我绝对不是正则表达式方面的专家,我已经尝试了几种方法来实现这一点。

    我想使用以下代码

    NSString *searchString  = @"$10.23, $1024.42, $3099";
    NSString *regexString   = @"\\$((\\d+)(?:\\.(\\d+)|\\.?))";
    NSArray  *capturesArray = NULL;
    
    capturesArray = [searchString arrayOfCaptureComponentsMatchedByRegex:regexString];
    

    所以我的问题是,有人能告诉我解析html链接的searchString是什么,或者给我一个关于regexlite如何工作的清晰教程吗?我已经阅读了很多文档了 http://regexkit.sourceforge.net/RegexKitLite/

    提前感谢,,

    静默

    3 回复  |  直到 16 年前
        1
  •  4
  •   bbum    16 年前

    简言之,不要那样做。正则表达式是解析HTML的可怕方式。HTML文档具有高度结构化的标签层次结构,其内容可以跨越多行,而不会在呈现形式中显示所述行。

    假设结构良好的HTML,可以使用XML解析器。

    NSXMLParser 还有一些很好的例子。

        2
  •  0
  •   Kendall Helmstetter Gelner    16 年前

    searchString将是整个原始HTML文本,regexString应该更像:

    NSString *regexString = @"href=\"(.*)\">(.*)<";
    

    然后,您将使用捕获匹配来拉出match1和match2,使用搜索范围选项在HTML文本中重复匹配,以便跳过已搜索的内容。。。

    我不知道你想用searchString和数字做什么。

        3
  •  0
  •   Zen_silence    16 年前

    NSString *regexString = @"<a href=([^>]*)>([^>]*) - ";
    

    Oreilly的书《掌握正则表达式》帮助我很快就明白了这一点。如果你想使用正则表达式,我强烈建议你阅读。