语言是红宝石,这里是我的IRB会议为什么我的正则表达式中的最后一个表达式连接到第一个表达式?
expr = /\Aselect from (\D+)(?: (?:where|&&) (\D+) (\S+) (\S+))*(?: order by (\D+) (asc|desc))?\Z/
=> /\Aselect from (\D+)(?: (?:where|&&) (\D+) (\S+) (\S+))*(?: order by (\D+) (asc|desc))?\Z/
/> str = "select from Entity order by value desc"
=> "select from Entity order by value desc"
/> expr =~ str
=> 0
/> $1
=> "Entity order by value desc"
/> $2
=> nil
我只是不明白,为什么我是“按价值递减实体令”得到$ 1美元。这里期望的行为是获得$ 1 =>“实体”,$ 2 =>“值”,$ 3 =>“desc”。我究竟做错了什么?我如何修改这个正则表达式,以便得到这些结果?
谢谢