我正在尝试编写一个实现以下目标的正则表达式:
General Motors --> General Motors (stays the same!)
Yahoo! --> Yahoo (remove exclamation point)
Le7el --> Le7el
Mat. Science --> Mat Science
我尝试了一个简单的“/ \ W + $ /”,但不幸的是,它只在行尾抓到了标点符号。
答案 0 :(得分:1)
尝试s/[^\w\s]//g
,它应该用空字符串替换所有非单词和非空格字符。
如果需要,请准确指定您认为有效字符的内容,例如s/[^A-Za-z0-9 ]//g
。
好的,这就是Perl,但这是 think 正则表达式。
答案 1 :(得分:1)
如果您需要支持Unicode,请使用“Punct”属性:
s.gsub(/\p{Punct}/, '')
这对于简单的ASCII标点符号也同样有用。
答案 2 :(得分:0)
['General Motors','Yahoo!','Le7el','Mat. Science'].map{|e| e.tr('.!','')}
# => ["General Motors", "Yahoo", "Le7el", "Mat Science"]
['General Motors','Yahoo!','Le7el','Mat. Science'].map{|e| e.gsub(/[[:punct:]]/,'')}
# => ["General Motors", "Yahoo", "Le7el", "Mat Science"]