爲了將regex capture groups保存爲局部變量,正則表達式必須位於諸如/(?<somegroup>someregex)/ =~ 'somestring'
之類的操作的左側。例如,給定一個URL字符串,提取該頂級域名:可能將變量傳遞給正則表達式然後捕獲匹配組到另一個局部變量?
/(?<extract>\b.com\b)[\/]{0,1}/ =~ 'google.com'
puts extract # => .com
有各種域(.org和.scb,的.wine,.ME等)。我的策略是將all possible tlds from a reputable source存儲在一個數組中,並遍歷每一個並將其傳遞給正則表達式。你如何將一個變量傳遞給文字?
這裏是什麼,我試圖做一個簡單的方法:
def example_extract(url_str)
exmpl = '.com'
regx = /(?<extract>\b#{exmpl}\b)[\/]{0,1}/
regx =~ url_str
extract
end
example_extract('google.com')
# => NameError: undefined local variable or method `extract' for main:Object
我不變量傳遞給左手(文字)正則表達式操作。爲什麼我的捕獲組extract
未定義?
hmmmm ...看起來像這個問題的答案是一個大脂肪**不可能**。標記爲完整,並在未來的路上提出另一個問題。謝謝@sawa。 – binarymason