如何匹配不是字母,数字或空格的内容?
问题描述:
我正在使用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
但是正如你所看到的,它仍然是一个空间匹配。
答
您的/[^[:alnum:]]*/
模式匹配除字母数字字符之外的0个或更多符号。它将匹配空白。
为了匹配比字母数字和其他空白1个或多个字符时,可以使用
/[^[:alnum:][:space:]]+/
使用否定括号表达式与内部相关POSIX字符类。
'[^ [:alnum:]]'匹配任何非字母字符。尝试'[^ [:alnum:] [:space:]] +'以匹配除alphanum/whitespace字符以外的任何字符。 –
严重的是,失去了irb提示。他们分散了实际的代码,迫使有人试图帮助你,在复制/粘贴后进行编辑。 –