Поиск подстрок, заключенных в специальные символы в Swift - PullRequest
0 голосов
/ 28 мая 2018

У меня есть строка:

let string = "Users: [Ricky], [Bob], [Jane]"

, и я пытаюсь создать строку Массив (например, ["Ricky","Bob","Jane"]) со словами, заключенными в скобки.

Вопрос: Как подстроки и итерации результатов?

Является ли Regex подходом?

let string = "Users: [Ricky], [Bob], [Jane]"
let pattern = "/[(.*?)]/"
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.matches(in:string, range:NSMakeRange(0, string.utf8.count))

1 Ответ

0 голосов
/ 28 мая 2018

Вам нужен следующий шаблон:

let pattern = "\\[([^]]*)\\]"

\\[ - литерал [

[^]]* - любое количество символов, кроме ]

\\] - литерал ]

( ) нужен только в том случае, если вам нужно ссылаться на текст в квадратных скобках.

Вот полный рабочий код:

let string = "Users: [Ricky], [Bob], [Jane]"
let pattern = "\\[([^]]*)\\]"
let regex = try! NSRegularExpression(pattern: pattern)
let result = regex.matches(in:string, range:NSMakeRange(0, string.utf8.count))
let names = result.map { (string as NSString).substring(with: $0.range(at: 1)) }
print(names)

Вывод:

["Рикки", "Боб", "Джейн"]

...