2012-11-04 20 views
0

我想使用GSUB空的空間,以取代"?""." GSUB之間的區別。就是使用/或「?

我意識到是gsub(".", "")gsub(/./, "")之間的差異,但我不知道它是什麼。有人能解釋一下嗎?

此外,gsub("?","")似乎工作,並gsub(/?/,"")不起作用。 我們怎樣才能使gsub(/?/,"")工作?

+1

曾幾何時(Ruby 1.6),沒有區別:字符串模式自動轉換爲正則表達式。不同之處在於Ruby 1.8。 –

回答

2

最後按照上面提到的/reg/代表的正則表達式時"str"代表只是一個字符串。您的目標是從字符串中刪除?.。正則表達式將做的工作:

gsub(/[?.]/, '') 

你可以閱讀更多關於Ruby的正則表達式here。在我的示例中,/[abc]/將匹配單個字符abc

1

前者是字面上找到「?」字和替換Ť下襬,而後者是找出一個給定字符的0或1的情況。 ?對於使用/劃分的正則表達式有特殊的含義。

3

gsub("?", "")匹配文字?,而gsub(/?/, "")使用regular expressions找到一個匹配項。在正則表達式中,?表示前一個字符可以出現0或1次。爲了匹配文字?,你必須escapte它:

gsub(/\?/, "") 

又見Ruby文檔約gsub