匹配字符串模式,包括 Swift 中的变量部分
Match string patterns including variables parts in Swift
我正在尝试匹配 Swift 中的字符串模式。就我而言,与时间有关,
例子
“在 1 周内”
“在 4 周内”
我想匹配整个表达式,但 return 尤其是“in”和“week”之间使用的数字 (Int)。
进行这种 string/pattern 匹配的有效方法是什么?
我确实使用了例如rangeOfString 以前用于简单的字符串匹配,但我想知道如何处理匹配这些更复杂的字符串模式,包括其可变部分。
试试这个:
var pattern = "in\s+(\d+)\s+weeks"
var error: NSError?
var regExp = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)!
func getWeekCount(input: String) -> String? {
let m = regExp.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input)))
print(m)
if let mm = m as? [NSTextCheckingResult] {
print(mm.count)
if mm.count >= 1 {
let range = m[0].rangeAtIndex(1)
return NSString(string: input).substringWithRange(range)
}
}
else {
print("no match")
}
return nil
}
我正在尝试匹配 Swift 中的字符串模式。就我而言,与时间有关,
例子
“在 1 周内”
“在 4 周内”
我想匹配整个表达式,但 return 尤其是“in”和“week”之间使用的数字 (Int)。
进行这种 string/pattern 匹配的有效方法是什么?
我确实使用了例如rangeOfString 以前用于简单的字符串匹配,但我想知道如何处理匹配这些更复杂的字符串模式,包括其可变部分。
试试这个:
var pattern = "in\s+(\d+)\s+weeks"
var error: NSError?
var regExp = NSRegularExpression(pattern: pattern, options: .CaseInsensitive, error: &error)!
func getWeekCount(input: String) -> String? {
let m = regExp.matchesInString(input, options: nil, range:NSMakeRange(0, countElements(input)))
print(m)
if let mm = m as? [NSTextCheckingResult] {
print(mm.count)
if mm.count >= 1 {
let range = m[0].rangeAtIndex(1)
return NSString(string: input).substringWithRange(range)
}
}
else {
print("no match")
}
return nil
}