這是關於Lazy (ungreedy) matching multiple groups using regex的後續問題。我嘗試使用該方法,但不是很成功。Ruby:如何執行lazy正則表達式匹配?
我從gitlab API抓取一個字符串,並嘗試提取所有的回購。回購的名稱遵循「https://gitlab.example.com/foo/xxx.git」的格式。
到目前爲止,如果我嘗試這個,它的工作正常。
gitlab_str.scan(/\"https\:\/\/gitlab\.example\.com\/foo\//)
但要加名通配符是棘手的,我用從前面的問題的方法:(。*?)
gitlab_str.scan(/\"https\:\/\/gitlab\.example\.com\/foo\/(.*?)\.git\"/)
它說用懶惰匹配,但它似乎沒有上班。
非常感謝您的幫助。
它返回'[[「xxx」]]',是不是預期的? –
我更喜歡返回https://gitlab.example.com/foo/xxx.git,以任何方式來完成?謝謝! – user180574
噢,如果匹配模式比'。*?'更復雜,那麼你可以使用'(?:...)',否則就不要使用圓括號 –