2017-05-25 79 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字符类。

相关问题