【问题标题】:NSRegularExpression + iOS + URLS in HTML [duplicate]HTML中的NSRegularExpression + iOS + URL [重复]
【发布时间】:2013-01-15 10:40:18
【问题描述】:

可能重复:
Parsing HTML NSRegularExpression

我有一个这样的 NSString:

NSString *string = @"<a href='http://john.com'>JOHN</a> http://john.com";

我想使用正则表达式来解析不在锚标记中的 URL,所以我可以将它们放在锚标记中。

我目前有这个:

NSRegularExpression *URLRegex = [NSRegularExpression
                                 regularExpressionWithPattern:@"((https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|])" options:NSRegularExpressionCaseInsensitive error:nil];

这确实会检测到 URL,但它也会检测到锚标记中的 URL,这是有问题的。

有人知道我需要做什么吗? 谢谢。

更新:

@"([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])"

下面由 Alex 提供的这种模式是一种改进。但是如果我有这样的字符串 @"http://example.com; john.com"; - example.com 匹配。我怎样才能排除它?基本上我不希望匹配锚标记中的任何内容。

【问题讨论】:

    标签: ios regex


    【解决方案1】:

    一般来说,考虑到正则表达式的工作原理,尝试捕获“不是”某物比尝试捕获某物要困难得多。您可以通过一些 sed 命令或 strip 的实现等轻松实现上述内容。

    考虑到你上面的格式,这样的东西会起作用吗,还是会为你排除太多的极端情况?

    "([^\'](https?):\\/\\/[-A-Z0-9+&@#\\/%?=~_|!:,.;]*[-A-Z0-9+&@#\\/%=~_|][^\'])"
    

    即,我们希望确保您的网址不在引号内。它会在以下方面失败:

    "tom went to 'https://www.google.com' to find the..."
    

    但我不知道这对你是否重要。

    【讨论】:

    猜你喜欢
    • 2014-04-09
    • 2020-05-23
    • 2012-11-04
    • 1970-01-01
    • 2012-05-18
    • 2013-07-07
    • 2011-12-15
    • 2017-02-21
    • 2017-05-22
    相关资源
    最近更新 更多