1

文字列があり、単語以外の文字と空白をすべて削除したいと考えています。そのためには正規表現が必要だと思いました。

私の正規表現は次のようになります(文字列クラスでメソッドとして定義しました):

/[\w&&\S]+/.match(self.downcase)

テスト文字列を使用してこの式を Rubular で実行すると、"hello ..a.sdf asdf..,"必要なすべてのもの ("helloasdfasdf") が強調表示されますが、irb で同じことを行うと、"hello" しか表示されません。

それがなぜなのかについて誰か考えがありますか?

4

2 に答える 2

1

\w[a-zA-Z0-9_] を意味します

\S非空白文字を意味します[a-zA-Z_-0-9!@#$%^&*\(\)\\{}?><....etc]

したがって、\w and \S条件の使用はあいまいです。

と言っているようなものWhat is an intersection of India and Asiaです。明らかにインドになります。ということで、ご利用をお勧めします\w+

2番目の回答で述べたように、スキャンを使用してすべての一致を取得できます。

string = "hello ..a.sdf asdf..,"
string.scan(/\w+/)
于 2014-05-13T10:20:08.180 に答える