2017-08-10 63 views
0

我知道還有類似的問題。但是,我找不到與我的完全相同的語言。我不理解或學習正則表達式,這就是爲什麼我需要問這個問題。刪除撇號以外的所有特殊字符

我有我想要做上述(職稱)的方法:

def alternate_words(string) 
    x = string.each {|char| char.gsub!(/[^0-9A-Za-z]/, '')} 
end 

此正則表達式證明了對大多數特殊字符的工作。但它會刪除撇號,我想保留我的。我們如何改變這一點?

+3

'/ [^ 0-9A-ZA-Z'] /' –

+1

時間獲得閱讀:) HTTP://www.regular- expressions.info/charclass.html –

+1

除非你有充分的理由不這樣做,否則你應該考慮使用POSIX括號表達式或'\ p {'}結構而不是以英語爲中心的'0-9A-Za-z'。這裏是'/ [^ [:alnum:]'] /'或'/ [^ \ p {Alnum}'] /'。 (在文檔[Regexp](http://ruby-doc.org/core-2.4.0/Regexp.html)中搜索)。如果您必須移植應用程序以支持多種語言。 –

回答

3

只需撇號添加到否定字符類:

def alternate_words(string) 
    x = string.each {|char| char.gsub!(/[^0-9A-Za-z']/, '')} 
    #           ---^--- 
end