如何拨入正则表达式以检测@usernames

时间:2019-01-02 22:16:46

标签: ios swift regex

我有一个正则表达式,我刚刚意识到不够精确。现在我正在使用:

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”,而忽略后两个示例?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见regex demo

它将匹配

  • \B@-不带字母,数字或@的{​​{1}}
  • _-除[^@\s]+和空格外的1+个字符
  • @-单词边界
  • \b-当前位置的右侧不得包含(?!@\w),后接字母,数字或@_可能就足够了。