gpt4 book ai didi

ruby - 不在 Ruby Regex 中抢组比赛

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:31 28 4
gpt4 key购买 nike

我正在尝试分解以下字符串:

"@command Text1 @command2 Text2"

在 ruby 中。我想取出数组中的“Text1”和“Text2”。为此,我使用扫描方法并使用它:

text.scan(/@* (.*?)(@|$)/)

但是,在运行时,脚本将中间的 @ 符号作为单独的匹配项拉出(大概是因为在 Ruby 中使用圆括号来指示要从输入中拉出的字符串):

Text1
@
Text2

我的问题是,考虑到表达式需要在“@”和字符串末尾停止匹配,我如何提取 Text1 和 Text2?

最佳答案

如果你想要一个非捕获组使用 ?:

text.scan(/@* (.*?)(?:@|$)/)

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

text.scan(/@\w+ (\w+)(?= @|$)/)

区别在于你的表达式匹配"foo",我想这不是故意的。

关于ruby - 不在 Ruby Regex 中抢组比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157401/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com