IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)

IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)

 2013/9/25 3:04:26  不吃苦瓜  博客园  我要评论(0)
  • 摘要:需求很简单,是从一段文本中匹配出其中的超链接。基本的做法就是用正则表达式去匹配。但是有这样一个问题。网上大部分的识别URL的正则表达式url末尾有空格的情况下可以正确识别。比如这样的情况。我是一段中文https://github.com/TinyQ我还是一段中文但是如果去掉TinyQ后面的空格。匹配到的将是“https://github.com/TinyQ我还是一段中文”是连上的。最后替换过好多正则才得以解决。这里贴上代码:NSError*error
  • 标签:解决 iOS URL 问题 连接 正则表达式 表达式 正则

需求很简单,是从一段文本中匹配出其中的超链接。基本的做法就是用正则表达式去匹配。但是有这样一个问题。

网上大部分的识别URL的正则表达式url末尾有空格的情况下可以正确识别。比如这样的情况。

 

我是一段中文https://github.com/TinyQ 我还是一段中文

但是如果去掉TinyQ 后面的空格。匹配到的将是 “https://github.com/TinyQ我还是一段中文” 是连上的。

最后替换过好多正则才得以解决。这里贴上代码:

NSError *error;
    NSString *regulaStr = @"\\bhttps?://[a-zA-Z0-9\\-.]+(?::(\\d+))?(?:(?:/[a-zA-Z0-9\\-._?,'+\\&%$=~*!():@\\\\]*)+)?";
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];
    NSArray *arrayOfAllMatches = [regex matchesInString:string options:0 range:NSMakeRange(0, [string length])];
    
    for (NSTextCheckingResult *match in arrayOfAllMatches)
    {
        NSString* substringForMatch = [string substringWithRange:match.range];
     NSLog(@"
substringForMatch");
}

这里做个更新。下面这个正则也是可以的。而且应该更好一些。

比如这种 Explorerwww.chiphell.com/ 。 也是可以识别出 www.chjiphell.com

class="p1">((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)

 

上一篇: Jason.NET--.NET 和 .NET框架概览 下一篇: 没有下一篇了!
发表评论
用户名: 匿名