正则表达式:以 space 开头或在行首的非字字符

Regex: non-word-char preceded by space or at the beginning of a line

我正在尝试匹配前面没有任何内容或空格的 @,如下例所示:

@one
    @two 
    who@three
    /@four

我的方法是 (^|\s)@,但这会捕获 one two three four\s@ 仅捕获 two。如何获得 one two,而不获得 three four

如果相关,所有 @ 后跟一个字母。

^\s*@怎么样?也就是说,行首后跟零个或多个空格,然后是@。 (注意,不同的语言有不同的正则表达式)

这是一种方式:

/^ *@(.+)/ #在 @ 之前允许零个或多个空格然后开始匹配所有内容直到换行符。

Javascript Demo

如果你可以使用 lookbehind,这应该可以工作(本机不支持 javascript):

(?<=\s|^)@