2017-05-25 80 views
3

我正在使用Ruby 2.4。我如何匹配不是字母,數字或空格的東西?我試過如何匹配不是字母,數字或空格的內容?

2.4.0 :004 > str = "-" 
=> "-" 
2.4.0 :005 > str =~ /[^[:alnum:]]*/ 
=> 0 
2.4.0 :006 > str = " " 
=> " " 
2.4.0 :007 > str =~ /[^[:alnum:]]*/ 
=> 0 

但是正如你所看到的,它仍然是一個空間匹配。

+2

'[^ [:alnum:]]'匹配任何非字母字符。嘗試'[^ [:alnum:] [:space:]] +'以匹配除alphanum/whitespace字符以外的任何字符。 –

+1

嚴重的是,失去了irb提示。他們分散了實際的代碼,迫使有人試圖幫助你,在複製/粘貼後進行編輯。 –

回答

1

您的/[^[:alnum:]]*/模式匹配除字母數字字符之外的0個或更多符號。它將匹配空白。

爲了匹配比字母數字和其他空白1個或多個字符時,可以使用

/[^[:alnum:][:space:]]+/ 

使用否定括號表達式與內部相關POSIX字符類。

相關問題