Swift正则expression式和反斜杠
在我正在开发的应用程序中,我从Plist文件读取正则expression式数组。
当我尝试应用下面的expression式时,问题出现了: \\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)
我得到的错误:
"Error Domain=NSCocoaErrorDomain Code=2048 \"The operation couldn't be completed. (Cocoa error 2048.)\" UserInfo=0x7fc862ea7220 {NSInvalidValue=\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)}"
似乎反斜线字符正在逃脱。 我尝试了下面的代码,以避免成功:
var match: String // an instance variable, just here for the purpose of the example if let input = regularExpressions[n] as? NSString { var convertedString = input.mutableCopy() as NSMutableString let transform = "Any-Hex/Java" CFStringTransform(convertedString, nil, transform as NSString, 1) self.match = convertedString }
任何线索?
至less在Objective-C中,正则expression式中的任何反斜杠也必须被转义,所以你的模式:
\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)
应该是
\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)