Как набрать регулярное выражение для определения @usernames - PullRequest
0 голосов
/ 03 января 2019

У меня есть регулярное выражение, которое я только что понял, недостаточно точно.Прямо сейчас я использую:

let regex = try NSRegularExpression(pattern: "@[^\\s]+")

, который в следующей строке: let str = "@alice, @bob, @zack@example.com sara@example.com"

возвращает ["@alice,", "@bob,", "@zack@example.com", "example.com"] (обратите внимание на запятые внутри некоторых изэлементы массива)

Как я могу сделать это более точно, чтобы он захватывал "@alice" и "@bob" без запятой и игнорировал последние 2 примера?

Спасибо

1 Ответ

0 голосов
/ 03 января 2019

Вы можете использовать

let regex = try NSRegularExpression(pattern: "\\B@[^@\\s]+\\b(?!@\\w)")

См. Демоверсию regex .

Это будет соответствовать

  • \B@ - a @ без предшествующей буквы, цифры или _
  • [^@\s]+ - 1+ символов, кроме @ и пробелов
  • \b - граница слова
  • (?!@\w) - нет @, за которым следуют буква, цифра или _, разрешенные непосредственно справа от текущего местоположения. A (?!@) может быть достаточно, хотя.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...