Swift - получить значение из строки с использованием регулярного выражения

aoe спросил: 28 апреля 2018 в 08:46 в: ios

Я хочу извлечь значение из строки в swift 4.

Я пытался использовать регулярное выражение, но он не работал, все, что мне нужно, - извлечь значение PK из этого запроса:

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

Я хочу получить результат здесь: 38061

regex i try:

   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) 

я получил ниже error:

Ошибка домена = NSCocoaErrorDomain Code = 2048"Значение" VALUES ('(. ?)"неверно." UserInfo = {NSInvalidValue = VALUES (' (. ?)

1 ответ

vadian ответил: 28 апреля 2018 в 09:04

Скобки являются специальными символами для захвата групп.

Чтобы обрабатывать скобку как буквенный символ, вы должны ее избежать:

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

Посмотрите: https://regex101.com/r/lyzoex/1