我正在尝试编写一个实现以下目标的正则表达式:
General Motors --> General Motors (stays the same!)
Yahoo! --> Yahoo (remove exclamation point)
Le7el --> Le7el
Mat. Science --> Mat Science
我尝试了一个简单的“/\W+$/”,但不幸的是,它只在行尾捕获了标点符号。
试试s/[^\w\s]//g
,它应该用空字符串替换所有非单词和非空格字符。
如果需要,请准确指定您认为有效的字符,s/[^A-Za-z0-9 ]//g
例如。
好的,这就是 Perl,但重要的是思想正则表达式。
如果您需要了解 Unicode,请使用“Punct”属性:
s.gsub(/\p{Punct}/, '')
这也适用于简单的 ASCII 标点符号。
['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"]