У меня есть следующая функция
static func replaceAtSignNotation(_ text : String) -> String {
var source = text
let wholePattern = "@\\[[a-z0-9-\\-]+\\]\\((\\w+)\\)"
let typePattern = "(?<=]\\()[^)]+(?=\\))"
if let wholeRange = source.range(of: wholePattern, options: .regularExpression) {
if let typeRange = source.range(of: typePattern, options: .regularExpression) {
let username = source[typeRange]
source.replaceSubrange(wholeRange, with: "@\(username)")
}
} else {
return text
}
return replaceAtSignNotation(source)
}
, который делает отличные шаблоны поиска работы, такие как:
@[a12-3asd-32](john)
@[b12-32d1-23](martha)
И позволяет мне поймать имя пользователя, но некоторые имена пользователей содержат «-», например:
@[c12-12d1-13](john-user-1)
Но мое текущее регулярное выражение не фиксирует эти случаи. Любая идея, как я могу адаптировать свое регулярное выражение для управления этими делами?