为什么“aabbcc”[/ ab * /]只返回“a”?

时间:2017-02-08 15:03:46

标签: ruby regex ruby-2.3.1

如果量词*代表“零次或多次”,似乎"aabbcc"[/ab*/]应该返回"abb",但它只返回"a"

2 个答案:

答案 0 :(得分:4)

正则表达式完全返回您的要求:第一次出现1 a后跟0或更多b

如果您想要所有非重叠的出现,可以使用scan

"aabbcc".scan(/ab*/)
#=> ["a", "abb"]

如果您想要至少1 b,可以使用b+

"aabbcc"[/ab+/]
#=> "abb"

答案 1 :(得分:1)

好的,所以我刚学会了,因为最左边的比赛获胜,因为在a之前有一个abb匹配,这就是返回的内容。