正则表达式:如何匹配字符串中出现的所有@something

时间:2011-07-02 00:29:40

标签: regex email expression

我需要以这种方式查找“@”字符预定的所有单词的出现:@soemthing。

示例:

string input = "@alias1 is my first email but @alias2.com and email@alias3 along with @alias4 are disabled"

我只想匹配@ alias1和@ alias4但不匹配@ alias.com,或发送电子邮件@ alias3

由于

5 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

/(?:^|\W)@[\w]+(?:\s|$)/

答案 1 :(得分:2)

这应该有用......

(?<=^|\s)@\w+(?=\s|$)

要解释一下,(?<=^|\s)是一个积极的外观,确保你要么在字符串的开头,要么在你的匹配之前有一个空白字符。然后(?=\s|$)是一个积极的先行,确保匹配后跟空格或字符串结尾。

答案 2 :(得分:1)

我会用这个:(?<=(^|\s))@[a-zA-Z]+(?=(\s|$))

这个正则表达式说“@后跟字母,但前面是空格或行开头,下一个字符是空格或行尾”。

虽然您的示例未指定,但如果您愿意接受下划线字符,例如@some_thing,那么您可以使用[a-zA-Z]替换\w

答案 3 :(得分:0)

使用以下内容: \b@\w+\b

你没有指定编程语言,所以我假设是C#。但我不知道C#是否支持“\ b”。

编辑:

我会采纳贾斯汀的评论并建议\B@\w+(?=["'\s]|$)

答案 4 :(得分:-2)

尝试使用此正则表达式:

@\w+