我正在嘗試使用正則表達式全局變量與ruby gsub!方法。在Ruby中使用正則表達式全局變量gsub
我心目中什麼是這樣的:
MyTextString.gsub!(/regex expression/,$1)
這是怎麼了,我走近它,但它不工作。這是可能的,或者也許我的正則表達式不起作用。而不是
我正在嘗試使用正則表達式全局變量與ruby gsub!方法。在Ruby中使用正則表達式全局變量gsub
我心目中什麼是這樣的:
MyTextString.gsub!(/regex expression/,$1)
這是怎麼了,我走近它,但它不工作。這是可能的,或者也許我的正則表達式不起作用。而不是
使用'\1'
$1
($1
引用不存在,因爲你還沒有匹配的正則表達式又一個變量)
此外,「我的正則表達式是不工作」讓人難以幫助。一個更好的短語將解釋爲什麼它不工作(字符串相同,或者出現錯誤,或者其他),並提供重現問題所需的數據(字符串和正則表達式)。
str = "abcdefg"
str.gsub!(/a(.)c/, '\1')
str # => "bdefg"
謝謝。點我的問題,欣賞反饋。關於1美元,我認爲在整個gsub命令完成之前不會發生匹配。再次感謝。 – Mutuelinvestor 2012-08-08 02:25:16
這並不是說「在整個命令完成之前不會發生比賽」。當方法被調用時,方法的參數在方法執行之前被計算*。因此,如果你執行'/regexp/.gsub("str「,$ 1)',* first * Ruby將評估'」str「'和'$ 1',*然後*它執行'gsub'。 '$ 1'是一個全局變量,在正則表達式匹配後由Ruby解釋器設置。所以如果你只是做了一個正則表達式匹配(在前面一行),將設置'$ 1',並且*(先前)匹配的*值將成爲'gsub'的第二個參數。 – 2012-08-08 05:46:15
如果您發現字詞混淆,請編輯它。 – 2012-08-08 13:19:11
您可以使用'gsub'塊格式的'$ 1'。 – 2012-08-08 02:24:40