无论正则表达式是什么,> 1捕获组都会使此代码崩溃并出现以下错误。为什么在我的正则表达式中有多个捕获组会崩溃我的应用程序?
由于未捕获的异常'NSRangeException',原因:' - [__ NSCFString substringWithRange:]:Range {9223372036854775807,0}范围出界;串长度279'
public extension String
{
//Multi use parsing function
func regexParse(pattern:String, captureGroup:Int, caseSensitive:Bool) ->[String]
{
do
{
//Creates empty results array.
var resultsArray = [""]
//Sets Case sensitivity
var caseSensitivity = NSRegularExpressionOptions.CaseInsensitive
if(caseSensitive)
{
caseSensitivity = NSRegularExpressionOptions.init(rawValue: 0)
}
//Sets regex to correct pattern
let regex = try NSRegularExpression(pattern: pattern, options: caseSensitivity)
//Converts string to NSString as swift doesn't support regex
let nsString = self as NSString
//Sets parsing range to the entire string
let all = NSMakeRange(0, nsString.length)
//Enumerates through all matches and extracts the 1st capture bracket for each match and adds it to the resultsArray.
regex.enumerateMatchesInString(self, options: NSMatchingOptions(rawValue: 0), range: all)
{
(result: NSTextCheckingResult?, _, _) in let theResult = nsString.substringWithRange(result!.rangeAtIndex(captureGroup))
resultsArray.append(theResult)
} //!!>>>>>>>>Error occurs here after skipping MatchingOptions content.!!
return resultsArray
}
catch
{
print("Invalid regex")
return(["Error"])
}
}
}
'让nsString = self作为NSString'是'self'是一个字符串? – tktsubota
@TroyT是的,这是一个字符串扩展。我将展开代码以显示此内容。 – Deco
@DavidS发生了变化,无法真正找到正在发生的事情,所以前面的句子只比放上'Halp' – Deco