在Swift 2.2中使用Regex从字符串中提取确切的链接

与胺


我只想按照以下代码提取网站的链接:

import UIKit
import Foundation

func regMatchGroup(regex: String, text: String) -> [String] {
    do {
        let regex = try NSRegularExpression(pattern: regex, options: [])
        let nsString = text as NSString
        let results = regex.matchesInString(text,
                                            options: [], range: NSMakeRange(0, nsString.length))
         var internalString = [String]()
        for result in results {

            for var i = 0; i < result.numberOfRanges; ++i{
                internalString.append(nsString.substringWithRange(result.rangeAtIndex(i)))
            }
        }
        return internalString
    } catch let error as NSError {
        print("invalid regex: \(error.localizedDescription)")
        return []
    }
}
// USAGE:
let textsearch = "mohamed amine ammach <img alt='http://fb.com' /> hhhhhhhhhhh <img alt='http://google.com' />"
let matches = regMatchGroup("alt='(.*?)'", text: textsearch)
if (matches.count > 0) // If we have matches....
{ 
    for (var i=0;i < matches.count;i++) {

       print(matches[i])

    }
}

Playgrond打印以下内容:

alt='http://fb.com'
http://fb.com
alt='http://google.com'
http://google.com

但我只想获取:
http : //fb.com
http://google.com,
这里有人可以帮助我解决此问题吗?,我将不胜感激

OOPer

您需要知道该NSTextCheckingResult.rangeAtIndex(_:)返回的范围与索引为0的整个正则表达式模式匹配。

在您的情况下:

rangeAtIndex(0)->范围alt='(.*?)'->alt='http://fb.com'

rangeAtIndex(1)->范围(.*?)->http://fb.com

因此,在生成匹配的String时,您需要跳过索引值0。

尝试将最里面的for语句更改为:

            for i in 1 ..< result.numberOfRanges { //start index from 1
                internalString.append(nsString.substringWithRange(result.rangeAtIndex(i)))
            }

(您还需要知道一件事,即不赞成使用C样式的语句。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift 2.2中使用Regex从字符串中提取确切的链接

来自分类Dev

如何在Angular2中导航到确切的URL字符串

来自分类Dev

在Swift或Objective-C中从字符串中删除确切的词组

来自分类Dev

Swift 2中的字符串索引

来自分类Dev

干草堆2 SearchQuerySet与按与确切的字符串匹配的列表进行筛选

来自分类Dev

在Swift 2中使用#

来自分类Dev

在Swift 2中使用#

来自分类Dev

Swift 2在字符串中字符的位置

来自分类Dev

在Angular2 App中使用字符串插值从数组中提取值

来自分类Dev

Swift 2中的内存字符串压缩

来自分类Dev

使用Python从字符串中提取2位整数

来自分类Dev

使用psycopg2从python中的元组中提取字符串

来自分类Dev

在Swift 2中使用TouchesMoved

来自分类Dev

在Swift中从字符串中提取整个单词

来自分类Dev

Swift 2中的withUnsafePointer

来自分类Dev

使用 python 从字符串中提取确切的单词

来自分类Dev

Swift:从字符串中提取子字符串

来自分类Dev

日期与字符串操作Swift2最佳实践

来自分类Dev

Swift2将字符串转换为NSData

来自分类Dev

如果字符串包含语句-Swift 2 Xcode 7

来自分类Dev

Swift 2如何更改公共var字符串

来自分类Dev

突变字符串的迅捷数组(Swift 2)

来自分类Dev

Swift2将字符串转换为NSData

来自分类Dev

2D Swift 数组的 HTTP 响应字符串

来自分类Dev

在 Excel 中提取字符串 Beetwen 2 字符

来自分类Dev

Json with Swift 2,提取数据

来自分类Dev

RegEx用于在C#中提取2个字符串之间的行

来自分类Dev

Swift 2 TableView排序

来自分类Dev

Swift 2 SpriteKit问题