我經歷about_regular_expressions.rb,不明白到底這裏發生了什麼:Ruby Koans:正則表達式括號「捕獲」匹配的內容?
def test_variables_can_also_be_used_to_access_captures
assert_equal "Gray, James", "Name: Gray, James"[/(\w+), (\w+)/]
assert_equal "Gray", $1
assert_equal "James", $2
end
它似乎對我來說,在正則表達式中使用括號中的引擎蓋下創建兩個新變量(1美元和2美元)。
這是正確的嗎?
但後來我這樣做:
def test_variables_can_also_be_used_to_access_captures
assert_equal "Gray, James", "Name: Gray, James"[/(\w+), (\w+)/]
assert_equal "Smith, Bobert", "Name: Smith, Bobert"[/(\w+), (\w+)/]
assert_equal "Smith", $1
assert_equal "Bobert", $2
end
它拍攝 「史密斯」 和 「Bobert」。每次使用帶括號的新正則表達式時,我想前面的值只是被覆蓋了?
如果我再嘗試捕捉只是一個字:
def test_variables_can_also_be_used_to_access_captures
assert_equal "Gray, James", "Name: Gray, James"[/(\w+), (\w+)/]
assert_equal "Smith, Bobert", "Name: Smith, Bobert"[/(\w+), (\w+)/]
assert_equal "Smith", $1
assert_equal "Bobert", $2
assert_equal "Susan,", "Name: Susan, whatever"[/(\w+),/]
assert_equal "Susan", $1
assert_equal nil, $2
end
$ 2不見了......(沒有更多的「Bobert」)
任何人都可以擺脫對引擎蓋下會發生什麼一些輕? 或者指點我正確的方向?
太棒了,謝謝。還有一個簡單的問題:什麼是$〜和$&?它看起來像$〜獲得下一場比賽? – Robert
'$〜'包含剛剛完成的比賽的全部信息。你可以從中提取你想要的任何東西,包括所有匹配,初始位置,結束位置等。$&是與正則表達式匹配的整個子字符串。 – sawa
哦,好的。再次感謝! – Robert