ios - 无法使用 Swift 2 在给定字符串中搜索模式

标签 ios iphone string swift

对于给定的 NSstring,我需要搜索一个 IP 地址并显示它。 下面是示例代码,但不知道为什么它不起作用。

字符串是

(SII_Bg

SII Bg

Disconnected  ( User Disconnected )  



N/A



SII_Bg_IP

SII Bg via Router

Connected    (00:19:36)

191.30.33.55 

N/A 

) 

函数搜索IPString()

var validIpAddressRegex : String = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"

    let regex = try! NSRegularExpression(pattern : validIpAddressRegex, options: NSRegularExpressionOptions.CaseInsensitive)

    let abc = NSString(data: myData, encoding: NSUTF8StringEncoding)

    let  xyz  = abc as! String

 let newString = xyz.stringByReplacingOccurrencesOfString("\n", withString: " ", options: NSStringCompareOptions.LiteralSearch, range: nil)

            let results = regex.matchesInString(newString,

                options: [], range: NSMakeRange(0, abc!.length))

                as! [NSTextCheckingResult]


            print(results)
  1. mydata 是正在转换为 NSString 的 NSData。
  2. mydata 包含以上值。
  3. 替换新字符串中的“\n”。

但结果值为“0 个元素”,即使该字符串具有有效的 ip 地址。 请让我知道哪里出错了。

谢谢

最佳答案

您甚至可以稍微简化正则表达式。做这样的事情。

func searchIPString(string: String) -> [String]? {
    let regex = "\\d{1,3}[.]\\d{1,3}[.]\\d{1,3}[.]\\d{1,3}"
    do {
        let regularExpresion = try NSRegularExpression(pattern: regex, options: .CaseInsensitive)
        let matches = regularExpresion.matchesInString(string, options: .ReportCompletion, range: NSMakeRange(0, string.characters.count))

        var matchingIPs = [String]()
        let convertedString = string as NSString
        matches.forEach { textCheckingResult in
            let range = textCheckingResult.range
            let foundIP = convertedString.substringWithRange(range) as String
            matchingIPs.append(foundIP)
        }

        return matchingIPs
    } catch let error as NSError{
        print("Regular Expression Format is Wrong: \(error.localizedDescription)")
    }

    return []
}

关于ios - 无法使用 Swift 2 在给定字符串中搜索模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215303/

相关文章:

javascript - 如何定义 javascript string.length() 函数?

iphone - iWebkit、JQTouch、iUI

ios - 在 ARC 模式下释放对象

ios - AVAudioplayer如何让当前时间自动更新

iphone - 检测自定义按钮的 UIAppearance 代理中的更改

ios - 登录后主屏幕中的导航栏未出现

Java,理解

javascript - 给一串html添加粗体标签

ios - 当 UIView dealloc 仍保留引用时删除所有当前动画

ios - strlen() 给出错误的结果