Есть ли способ сделать обратное regular expression
сопоставление и извлечь несоответствующую строку как возвращаемое значение в iOS
Swift
?
Скажем,
Входная строка: "232#$%4lion
"
Шаблон регулярного выражения: "[a-z]{4}
"
Нормальное совпадение Вывод: "lion
"
Вывод обратного соответствия: "232#$%4
" (ожидаемый результат)
Ниже приведен обычный код быстрого соответствия регулярному выражению.
func regexMatch() {
let str = "232#$%4lion"
let regex = try! NSRegularExpression(pattern: "[a-z]{4}", options: .caseInsensitive)
let firstMatch = regex.firstMatch(in: str, options: .reportProgress, range: NSMakeRange(0, str.count))
guard let matches = firstMatch else {
print("No Match")
return
}
if matches.numberOfRanges > 0 {
let outputRange = matches.range(at: 0)
let startIndex = str.index(str.startIndex, offsetBy: outputRange.lowerBound)
let endIndex = str.index(str.startIndex, offsetBy: outputRange.upperBound)
print("Matched String: \(str[startIndex..<endIndex])")
}
}
Я могу каким-то образом манипулировать результатом сопоставления, а затем могу извлечь обратную строку сопоставления, манипулируя операциями диапазона. Вместо этого,
Я хочу знать, можно ли выполнить обратное сопоставление, используя сам шаблон регулярных выражений в Swift, и напрямую получать несоответствующий шаблон из входной строки.
Вышеуказанные входные и выходные значения приведены только для справки. Просто чтобы вопрос был простым. Фактические значения в случаях реального времени могут быть сложными. Пожалуйста, ответьте с общим решением.