NSRegularExpression在CRLF之后不匹配任何内容。为什么?

时间:2018-11-21 10:17:52

标签: swift

在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的实例。

1 个答案:

答案 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)))