1

我正在尝试匹配类似于 twitter 的@username。我现在使用的正则表达式: "([@])(\S+)"非常适合这个。

但是限制如下 test@test.com 匹配 test.com

现在我想完全排除 test@test.com

但是,我的一些用户的用户名是 test@test.com,如果他们在该电子邮件用户名前确实有一个 @,则希望将它们包括在内。

所以@test@test.com 应该匹配

总结:需要匹配:

@用户名

@测试

@test@test.com

不想匹配:

test@test.com

4

4 回答 4

2

我建议使用负面的lookbehind,例如:

(?<!\S)@(\S+)

这不会在 之前包含任何可能的空格@foo,因此您可以毫无问题地替换它。

于 2013-03-14T04:51:14.423 回答
1

作为答案,您不想@在文本中间检查,但它前面需要一个空格,所以使用(\s|^)+([@])(\S+)

于 2013-03-14T04:11:22.197 回答
0

正则表达式看起来像这样:^@.*^ 会将您锚定到行首或字符串的开头。请务必查看OverAPI Regex,他们的备忘单非常好。

于 2013-03-14T04:10:26.067 回答
0

^@.* 上面的正则表达式匹配你要找的

于 2013-03-14T04:13:00.003 回答