Regex 如何在NSRegularExpression中查找匹配的组

Regex 如何在NSRegularExpression中查找匹配的组,regex,swift,nsregularexpression,Regex,Swift,Nsregularexpression,我有一个带有多个捕获组的regex语句,这些捕获组由|运算符分隔。如何找出匹配的捕获组?我能想到的唯一方法——在这个例子中——是计算匹配的字符数 var string = "1234567897" var pattern = "(^\\d{9}$)|(^\\d{10}$)|(^\\d{13}$)|(^[a-zA-Z]{2}\\d{9}[a-zA-Z]{2}$)" var myRegex = NSRegularExpression(pattern: pattern, options: nil,

我有一个带有多个捕获组的regex语句,这些捕获组由|运算符分隔。如何找出匹配的捕获组?我能想到的唯一方法——在这个例子中——是计算匹配的字符数

var string = "1234567897"
var pattern = "(^\\d{9}$)|(^\\d{10}$)|(^\\d{13}$)|(^[a-zA-Z]{2}\\d{9}[a-zA-Z]{2}$)"

var myRegex = NSRegularExpression(pattern: pattern, options: nil, error: nil)!

if let myMatch = myRegex.firstMatchInString(string, options: nil,
    range: NSRange(location: 0, length: string.utf16Count)) {
        println((string as NSString).substringWithRange(myMatch.rangeAtIndex(0)))

}

我为我的例子写了一段代码。我相信它可以写得更好,但它现在起作用了

Swift 2.3

var string = "123456789"
var pattern = "(^\\d{9}$)|(^\\d{10}$)|(^\\d{13}$)|(^[a-zA-Z]{2}\\d{9}[wW]{2}$)"

var myRegex = try! NSRegularExpression(pattern: pattern, options: [])

if let myMatch = myRegex.firstMatchInString(string, options: NSMatchingOptions.init(rawValue: 0), range: NSRange(location: 0, length: string.utf16.count)) {
    var matchedGroup = 0

    for var i in 1..<myMatch.numberOfRanges {
        if myMatch.rangeAtIndex(i).length != 0 {
            matchedGroup = i
            break
        }

    }
    print(matchedGroup)
    print((string as NSString).substringWithRange(myMatch.rangeAtIndex(0))) //whatever the range you want to print

}
var string = "123456789"
var pattern = "(^\\d{9}$)|(^\\d{10}$)|(^\\d{13}$)|(^[a-zA-Z]{2}\\d{9}[wW]{2}$)"

var myRegex = try! NSRegularExpression(pattern: pattern, options: [])

if let myMatch = myRegex.firstMatch(in: string, options: NSRegularExpression.MatchingOptions.init(rawValue: 0), range: NSRange(location: 0, length: string.utf16.count)) {
    var matchedGroup = 0

    for var i in 1..<myMatch.numberOfRanges {
        if myMatch.rangeAt(i).length != 0 {
            matchedGroup = i
            break
        }

    }
    print(matchedGroup)
    print((string as NSString).substring(with: myMatch.rangeAt(0))) //whatever the range you want to print

}
var string=“123456789”
var pattern=“(^\\d{9}$)|(^\\d{10}$)|(^\\d{13}$)|(^[a-zA-Z]{2}\\d{9}[wW]{2}$)”
var myRegex=试试看!NSRegularExpression(模式:模式,选项:[])
如果让myMatch=myRegex.firstMatchInString(字符串,选项:NSMatchingOptions.init(rawValue:0),范围:NSRange(位置:0,长度:string.utf16.count)){
var matchedGroup=0
对于1中的var i。。