在Swift 4.2中,CRReg之后,NSRegularExpression不匹配任何内容。为什么?
let str = "\r\nfoo"
let regex = try! NSRegularExpression(pattern: "foo")
print(regex.firstMatch(in: str, range: NSRange(location: 0, length: str.count))) // => nil
如果删除“ \ r”或“ \ n”,则会得到NSTextCheckingResult的实例。
答案 0 :(得分:2)
在Swift 4中,引入了NSRange
的新初始化程序,以可靠地将Range<String.Index>
转换为NSRange
。
始终使用它可以解决您的问题。
let str = "\r\nfoo"
let regex = try! NSRegularExpression(pattern: "foo")
print(regex.firstMatch(in: str, range: NSRange(str.startIndex..., in: str)))