これを試して:
a = "Vallås centrum ISN'T blah Blah HALMSTAD AND "
b = a.gsub(/\b[A-Z]?[^A-Z\s']+\s*\b/, '')
puts b
これはほとんどの小文字の単語を処理する必要がありますが、句読記号、疑問符、感嘆符、非ASCII文字などがある他の可能性のある場合に対処する必要があります...
ここでこれをいじることができます
@TimPietzckerの非ASCII文字のコメントを考慮A-Z
して、をPOSIXブラケット式に置き換えることができます。[[:upper:]]
更新:
これはより完全な解決策になります:
ほとんどの小文字の単語を見つけるための正規表現(これはさらに多くの記号に拡張できます):
\b(?:[^\s]?[[:lower:]][^\s]?)+\s*\b[?!]?
ここで正規表現をテストします
Rubyコード:
a = "Vallås centrum ISN'T blah Blah HALMSTAD AND BlaG and bLag's? FINISH "
b = a.gsub(/\b(?:[^\s]?[[:lower:]][^\s]?)+\s*\b[?!]?/, '')
puts b
ここでコードをいじる