美文网首页
翻译NSHipster,NSRegular​Expression

翻译NSHipster,NSRegular​Expression

作者: BoxDeng | 来源:发表于2017-11-09 23:11 被阅读0次

    有些人说: 遇到问题,明白了。我要用 NSRegular​Expression:  正则表达式, 现在有三个问题

    编程世界里, 正则表达式应用广泛。 有些觉得这个十分难以理解, 符号密集。 更多的程序员觉得,正则表达式是代码的基础 ,是一个笑话。

    有些程序员觉得,正则表达式,真是轻便,有强大。没有工具库这样通用的神器的人,不知道他们怎么工作的。

    首先,我们都认为,Cocoa 在NSRegularExpression中,封装了你不曾见识过的 强大的正则表达式。

    不行吗?我们从这个HTML片段中提取链接,先用Ruby


    htmlSource = "Questions? Corrections? [@NSHipster](http://www.jianshu.com/%22https://twitter.com/NSHipster/%22) or [on GitHub](http://www.jianshu.com/%22https://github.com/NSHipster/articles/%22)." linkRegex = /]*href="([^"]*)"[^>]*>/ilinks = htmlSource.scan(linkRegex)puts(links)# https://twitter.com/NSHipster# https://github.com/NSHipster/articles


    两三行程序,看你怎么数了。还行吧,现在试试在Swift 中使用 NSRegularExpression 提取链接

    let htmlSource="Questions? Corrections? [@NSHipster](http://www.jianshu.com/%22https://twitter.com/NSHipster/%22) or [on GitHub](http://www.jianshu.com/%22https://github.com/NSHipster/articles/%22)."let linkRegexPattern = "]*href=\"([^\"]*)\"[^>]*>"let linkRegex = try! NSRegularExpression(pattern: linkRegexPattern , options:.caseInsensitive) let matches = linkRegex.matches(in:htmlSource,range:NSMakeRange(0,htmlSource.utf16.count))let links = matches.map{result->Stringinglet hrefRange = result.rangeAt(1)let start = String.UTF16Index(hrefRange.location)let end = String.UTF16Index(hrefRange.location+hrefRange.length)return String(htmlSource.utf16[start..String? { guard let range = nsrange.toRange() else { return nil } let start = UTF16Index(range.lowerBound) let end = UTF16Index(range.upperBound) return String(utf16[start..Range? { guard let range = nsrange.toRange() else { return nil } let utf16Start = UTF16Index(range.lowerBound) let utf16End = UTF16Index(range.upperBound) guard let start = Index(utf16Start, within: self), let end = Index(utf16End, within: self) else { return nil } return start..

    1 NSTextCheckingResult的实例 ? ,

    2 这些代码, 我都没码一下的  >

    3 [四种不同的编码方式](https://developer.apple.com/swift/blog/?id=30) /// 

    4 返回与 给定范围相同的范围 

    // 如果该范围,转换失败,返回nil func range(from nsrange: NSRange) -> Range? {






    参考资料:

    NSHipster 的Regex 原文

    好用的学习正则的github repo


    相关文章

      网友评论

          本文标题:翻译NSHipster,NSRegular​Expression

          本文链接:https://www.haomeiwen.com/subject/etkvmxtx.html