我有一个正则表达式,我刚刚意识到不够精确。现在我正在使用:
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”,而忽略后两个示例?
谢谢
答案 0 :(得分:1)
您可以使用
let regex = try NSRegularExpression(pattern: "\\B@[^@\\s]+\\b(?!@\\w)")
请参见regex demo。
它将匹配
\B@
-不带字母,数字或@
的{{1}} _
-除[^@\s]+
和空格外的1+个字符@
-单词边界\b
-当前位置的右侧不得包含(?!@\w)
,后接字母,数字或@
。 _
可能就足够了。