如何在第一次出现结束词时结束正则表达式匹配

时间:2018-03-27 23:32:09

标签: ruby regex

我有:

myString = String.new("Test String which should end here here")

我希望matchString"String which should end here"。我做了:

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

matchString"String which should end here here"。匹配将持续到第二个'here'字的结尾。我尝试在?之后添加非贪婪的'here',但它不起作用。

如何在第一个'here'之后停止匹配?

3 个答案:

答案 0 :(得分:1)

将非贪婪的?添加到.*

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

答案 1 :(得分:1)

如评论.*中所述,贪婪,你需要让它变得懒惰。使用\A也意味着字符串的开头。

str = "Test String which should end here here"
str[/\A.*?here/] #=> "Test String which should end here"

不要将camelCase用于变量,请使用上面的snake_case。

答案 2 :(得分:0)

myString[/\String which\b.*?here/]
#=> "String which should end here"