我正在尝试为字符串过滤创建正则表达式。我想得到符号" @"以及在那之后和空间之前写的任何东西。
有人可以帮我这个吗?
例如:
hi I am @vaibhav .
此正则表达式应该给出的预期结果是vaibhav
。
我做到了:
/@[a-z]*/
但是,我不确定这是否符合上述标准。
答案 0 :(得分:3)
要获得从@
到其后第一个空格的子字符串,请使用
@\S+
请参阅demo
\S
表示非空白字符。
如果您不需要@
,请使用捕获组:
@(\S+)
您需要的值将在第1组中。请参阅another demo。
如果您使用的是JavaScript:
var re = /@(\S+)/g;
var str = 'hi I am @vaibhav . hi, and I am @strib .';
var m;
while ((m = re.exec(str)) !== null) {
document.write("The value is: <b>" + m[1] + "</b><br/>");
}
&#13;
答案 1 :(得分:1)
最简单的解决方案是使用否定集。
'@'
'@'
' '
如果你想要匹配和捕捉,你可以这样做:
[^@]*@([^ ]*).*
如果您只想搜索,那么您不需要匹配整个字符串,您只需提取实际的匹配部分:
@([^ ]*)
最复杂的情况是您需要处理转义的'@'
。以下是使用该匹配的示例:
(?:[^\\@]|\\.)*@([^ ]*).*
答案 2 :(得分:0)