我试图分解以下字符串:
"@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,因为表达式需要在"@"和字符串末尾停止匹配?
如果您想要非捕获组使用?:
text.scan(/@* (.*?)(?:@|$)/)
Run Code Online (Sandbox Code Playgroud)
作为旁注,您的正则表达式看起来可能包含错误.也许你的意思是这个?
text.scan(/@\w+ (\w+)(?= @|$)/)
Run Code Online (Sandbox Code Playgroud)
不同的是你的表达式匹配" foo",我猜这不是故意的.