我正在寻找一种从正则表达式匹配中获取范围的方法。我有一个字符串
我正在寻找@ {1 | Tom Lofe}和@ {2 | Cristal Dawn}
从这个字符串中,我需要使用以下正则表达式来获取这些匹配的范围
"@\\{(\\d+) ?\\| ?(\\w+ *?\\w*?)\\}"
最好的方法是什么?到目前为止,我只能得到比赛而不是比赛。显然,标准的Swift函数range(of: <#T##StringProtocol#>, options: <#T##String.CompareOptions#>, range: <#T##Range<String.Index>?#>, locale: <#T##Locale?#>)
应该能够做到这一点,但我不知道如何使用它,并且似乎无法找到一个好的例子。
我也尝试过这个问题的答案get all ranges of a substring in a string in swift,但又一次无法让它发挥作用。
答案 0 :(得分:1)
这适用于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}