不要在Ruby Regex中抓取组匹配

hmi*_*ind 2 ruby regex

我试图分解以下字符串:

"@command Text1 @command2 Text2"
Run Code Online (Sandbox Code Playgroud)

在Ruby中.我想在数组中取出"Text1"和"Text2".为此,我使用扫描方法并使用此方法:

text.scan(/@* (.*?)(@|$)/)
Run Code Online (Sandbox Code Playgroud)

但是,在运行时,脚本将中间的@符号作为单独的匹配(可能是因为在Ruby中使用括号来指示要从输入中提取的字符串):

Text1
@ 
Text2
Run Code Online (Sandbox Code Playgroud)

我的问题是,我怎样才能提出Text1和Text2,因为表达式需要在"@"和字符串末尾停止匹配?

Mar*_*ers 5

如果您想要非捕获组使用?:

text.scan(/@* (.*?)(?:@|$)/)
Run Code Online (Sandbox Code Playgroud)

作为旁注,您的正则表达式看起来可能包含错误.也许你的意思是这个?

text.scan(/@\w+ (\w+)(?= @|$)/)
Run Code Online (Sandbox Code Playgroud)

不同的是你的表达式匹配" foo",我猜这不是故意的.