1
混亂我寫一塊紅寶石代碼像下面一些關於非貪婪正則表達式匹配
#! /usr/bin/ruby
s = "[[abc]]"
if(s =~ /\[(.+)*?\]/)
puts $1
end
if(s =~ /\[(.+?)\]/)
puts $1
end
其輸出是:
[abc
[abc
然後我改變變量s
s = "[[abc]]]"
其餘部分保持不變,但現在的結果是
[abc]
[abc
爲什麼會發生這種情況?任何人都可以向我解釋這個嗎?
我認爲這可能與差異有關在+之間?和*?這兩個非貪婪的量詞? – fabregaszy
我從來沒有使用紅寶石,但你的正則表達式不是非貪婪的。 '。+'仍然最終是貪婪的。 – npinti
@npinti那麼爲什麼在案例2中它不匹配[abc]],它會在貪婪的情況下做什麼? – fabregaszy