【问题标题】:How do I match something that is not a letter or a number or a space?如何匹配不是字母、数字或空格的内容?
【发布时间】:2017-05-25 14:29:01
【问题描述】:

我使用的是 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:]] 匹配任何非字母字符。尝试[^[:alnum:][:space:]]+ 匹配除字母数字/空白字符以外的任何字符。
  • 说真的,丢掉 irb-prompts。它们会分散实际代码的注意力,并迫使试图帮助您的人在复制/粘贴后进行编辑。

标签: ruby regex space alphanumeric


【解决方案1】:

您的 /[^[:alnum:]]*/ 模式匹配 0 个或多个字母数字字符以外的符号。它将匹配空格。

要匹配除字母数字和空格之外的 1 个或多个字符,您可以使用

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多