Die Sprache Ruby, hier ist meine irb SitzungWarum verkettet sich der letzte Ausdruck in meinem regulären Ausdruck mit dem ersten?
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
Ich verstehe einfach nicht, warum ich „Entity, um von Wert ab“ $ 1 bin immer. Das gewünschte Verhalten wäre hier $ 1 => "Entity", $ 2 => "value", $ 3 => "desc". Was mache ich falsch? Wie ändere ich diesen regulären Ausdruck, damit ich diese Ergebnisse erhalte?
Danke