Я хочу захватить строку между двумя совпадениями выражения регулярного выражения.
У меня есть эта строка
var testingString="NO Lettuce nNO Onions nNO Tomato nNO Ketchup NO Grilled Onions NO baked Sub Zapps"
Выражение регулярного выражения, которое я использую сейчас:
let matches = self.regexMatches(for: "([^\\snNO]+|[NO]\\S+([a-zA-Z0-9_\\w+])+\\S)", in: testingString)
Я получаю вывод как:
Lettuce
Onions
Tomato
Ketchup
Grilled
Onions
baked
sub
zapps
Но я хочу, чтобы вывод был таким:
Lettuce
Onions
Tomato
Ketchup
Grilled Onions
baked sub zapps
Я использую функцию regexMatches:
func regexMatches(for regex: String, in text: String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: regex)
let nsString = text as NSString
let results = regex.matches(in: text, range: NSRange(location: 0, length: nsString.length))
var tempResults = results.map { result in
(1..<result.numberOfRanges - 1).map { result.rangeAt($0).location != NSNotFound
? nsString.substring(with: result.rangeAt($0))
: ""
}
}
return tempResults.flatMap{$0}
} catch let error {
print("invalid regex: \(error.localizedDescription)")
return []
}
}