swift - 使用正则表达式从字符串中获取值

时间:2018-05-22 10:26:24

标签: ios swift regex string

我想从swift 4中的字符串中提取一个值。

我尝试使用正则表达式,但它没有工作我想要的是从此查询中提取PK值:

"INSERT INTO table(PK,anotherValue) VALUES ('38061','1233')"

我希望结果如下:38061

我尝试的正则表达式:

   var results = [String]()
    do{
    let regex = try NSRegularExpression(pattern:" VALUES ('(.*?)'", options: [])
    regex.enumerateMatches(in: query, options: [], range: NSMakeRange(0, query.utf16.count)) { result, flags, stop in
        if let r = result?.range(at: 1), let range = Range(r, in: query) {
            results.append(String(query[range]))
        }
    }
    } catch {
       print( error)
    }
    print(results) 

我得到以下错误:

  

错误域= NSCocoaErrorDomain代码= 2048"值“VALUES   ('(。?)'“无效。" UserInfo = {NSInvalidValue = VALUES('(。?)'

1 个答案:

答案 0 :(得分:5)

括号是捕获组的特殊字符。

要将括号视为文字字符,您必须将其转义:

pattern:" VALUES \\('(.*?)'"

请看: https://regex101.com/r/lyzoex/1