You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby正则匹配:如何让匹配在第一个'here'出现时终止?

解决Ruby正则匹配在第一个'here'处停止的问题

首先得说,你之前的正则里那个?用错位置啦——它跟在e后面,变成了让e可选,而不是让.*变成非贪婪模式,这就是为啥它还是匹配到了最后一个here。

要让匹配在第一个here就停下,咱们调整下正则逻辑就行,给你两个靠谱方案:

方案一:用非贪婪量词.*?

直接把.*改成非贪婪的.*?,它会尽可能少地匹配字符,碰到第一个here就立刻停止:

matchString = myString[/String which\b.*?here/, 0]

方案二:用排除型匹配(更严谨)

如果担心中间出现类似her的片段干扰,还可以用排除逻辑确保中间不会提前出现here:

matchString = myString[/String which\b(?:(?!here).)*here/, 0]

这个正则的意思是:匹配String which之后,一直到第一个完整here的内容,中间不会包含here的任何片段,精准度更高。

测试效果

用你的测试代码验证下:

myString = String.new("Test String which should end here here")
matchString = myString[/String which\b.*?here/, 0]
puts matchString # 输出:"String which should end here"

刚好得到你想要的结果~

内容的提问来源于stack exchange,提问作者Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:35:15