我需要以这种方式查找“@”字符预定的所有单词的出现:@soemthing。
示例:
string input = "@alias1 is my first email but @alias2.com and email@alias3 along with @alias4 are disabled"
我只想匹配@ alias1和@ alias4但不匹配@ alias.com,或发送电子邮件@ alias3
由于
答案 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+