使用Ruby 1.8.7我想在數據庫中存儲一些正則表達式,並在需要使用它們進行驗證時將它們輕鬆重組爲Regexp
對象。我發現Ruby顯示出一些不需要的行爲。例如:來自變量的Ruby正則表達式
r = Regexp.new(/^\w+$/i) => /^\w+$/i
r_i = r.inspect => "/^\\w+$/i"
r_s = r.to_s => "(?i-mx:^\\w+$)"
r_from_r_i = Regexp.new(r_i) => /\/^\w+$\/i/
r_from_r_s = Regexp.new(r_s) => /(?i-mx:^\w+$)/
r == r_from_r_i => false
r == r_from_r_s => false
我想是能夠在數據庫中存儲Regexp
的形式/pattern/options
而不是(?options:pattern)
格式,因爲我更熟悉前者。但是,當從一個變量創建一個新的Regexp
時,模式變得很古怪。 Ruby正在逃避/
s - 因此該模式無效。
解析正則表達式時,有沒有什麼辦法讓Ruby兌現/pattern/options
格式?
真的,'r_s'有什麼問題?它不會與原來的相同,但其表現完全相同。 –
@JanDvorak你是對的! –
上面的更新示例突出顯示了真正的問題。當從一個字符串變量中加載一個正則表達式時,'/'s會被轉義,當我只是想讓'Regexp'對象解析我的模式和字符串時。 –