zoukankan      html  css  js  c++  java
  • IOS 正则表达式匹配文本中URL位置并获取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

    ((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\.\-~!@#$%^&*+?:_/=<>]*)?)

  • 相关阅读:
    洛谷——P1951 收费站_NOI导刊2009提高(2)
    洛谷——P1475 控制公司 Controlling Companies
    洛谷——P1176 路径计数2
    洛谷——P1156 垃圾陷阱
    洛谷——P2734 游戏 A Game
    洛谷——P1767 家族_NOI导刊2010普及(10)
    洛谷——P1413 坚果保龄球
    Kali-linux破解LM Hashes密码
    Kali-linux分析密码
    Kali-linux密码在线破解
  • 原文地址:https://www.cnblogs.com/CCSSPP/p/3337947.html
Copyright © 2011-2022 走看看