2017-08-10 62 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