如何匹配非字母、数字或空格的内容?

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:]]+ 匹配除字母数字/空格字符之外的任何字符。 - Wiktor Stribiżew
1
认真点,放弃irb提示。它们会分散注意力并迫使帮助你的人在复制粘贴后进行编辑。 - Sagar Pandya
1个回答

1
你的/[^[:alnum:]]*/模式匹配0个或多个非字母数字字符。它也会匹配空格。
要匹配1个或多个非字母数字和空格字符,可以使用
/[^[:alnum:][:space:]]+/

使用带有相关POSIX字符类的否定括号表达式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接