Как получить диапазон из регулярных выражений - PullRequest
0 голосов
/ 25 апреля 2018

Я ищу способ получить диапазоны из соответствия регулярному выражению. У меня есть строка

Я ищу @ {1 | Том Лофф} и @ {2 | Cristal Dawn}

Из этой строки мне нужно получить диапазоны этих совпадений, используя следующее регулярное выражение

"@\\{(\\d+) ?\\| ?(\\w+ *?\\w*?)\\}"

Каков наилучший способ сделать это? До сих пор мне удавалось получить только спички, но не диапазоны. По-видимому, стандартная функция Swift range(of: <#T##StringProtocol#>, options: <#T##String.CompareOptions#>, range: <#T##Range<String.Index>?#>, locale: <#T##Locale?#>) должна быть в состоянии сделать это, но я не знаю, как ее использовать, и не могу найти хороший пример.

Я также попробовал ответить на этот вопрос получить все диапазоны подстроки в строке в быстром , но снова не могу заставить его работать.

1 Ответ

0 голосов
/ 25 апреля 2018

Это работает на 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...