我正在寻找一种从正则表达式匹配中获取范围的方法。我有一个字符串
我正在寻找@{1 | 汤姆洛夫}和@{2 | 水晶黎明}
从这个字符串中,我需要使用以下正则表达式来获取这些匹配项的范围
"@\\{(\\d+) ?\\| ?(\\w+ *?\\w*?)\\}"
做这个的最好方式是什么?到目前为止,我只能获得匹配项,但不能获得范围。显然,标准的 Swift 函数range(of: <#T##StringProtocol#>, options: <#T##String.CompareOptions#>, range: <#T##Range<String.Index>?#>, locale: <#T##Locale?#>)
应该可以做到这一点,但我不知道如何使用它,并且似乎找不到一个好的例子。
我也试过这个问题的答案在 swift中获取字符串中子字符串的所有范围,但再次无法让它工作。
这适用于 Xcode Playground,但如果它对您不起作用,请告诉我。
let regex = try! NSRegularExpression(pattern: "@\\{(\\d+) ?\\| ?(\\w+ *?\\w*?)\\}", options: [])
let input = "I'm looking for @{1 | Tom Lofe} and @{2 | Cristal Dawn}"
let range = NSRange(location: 0, length: input.utf16.count)
for match in regex.matches(in: input, options: [], range: range) {
print(match.range)
}
印刷:
{16, 15}
{36, 19}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句