【问题标题】:How to matches anything except space and new line?如何匹配除空格和换行之外的任何内容?
【发布时间】:2014-04-23 05:08:10
【问题描述】:

我有一个字符串,我只想匹配除空格和换行之外的任何字符的字符串。这必须是什么正则表达式?

我知道除空格以外的任何东西的正则表达式,即[^ ]+ 和除新行[^\n]+ 之外的任何东西的正则表达式(我在 Windows 上)。我不知道如何将它们组合在一起。

【问题讨论】:

    标签: python regex


    【解决方案1】:

    您可以将空格字符添加到要排除的字符类中。

    ^[^\n ]*$
    

    正则表达式

    ^              # the beginning of the string
     [^\n ]*       # any character except: '\n' (newline), ' ' (0 or more times)
    $              # before an optional \n, and the end of the string
    

    【讨论】:

      【解决方案2】:

      如果您只想排除空格和换行符,那么您可能需要使用

      r'^[^ \n]*$'
      

      例如,

      print re.match(r'^[^ \n]*$', """WelcometoStackoverflow""")
      # <_sre.SRE_Match object at 0x7f77a2a58238>
      print re.match(r'^[^ \n]*$', """Welcome toStackoverflow""")
      # None
      print re.match(r'^[^ \n]*$', """Welcome
      toStackoverflow""")
      # None
      

      请注意,它不会消除所有其他空白字符,如制表符、换行符等

      print re.match(r'^[^ \n]*$', """Welcome\ttoStackoverflow""")
      # <_sre.SRE_Match object at 0x7f77a2a58238>
      

      所以如果你想排除所有的空白字符,那么你可以使用

      r'^[^\s]*$'
      

      或者

      r'^\S*$'
      

      例如,

      print re.match(r'^[^\s]*$', """WelcometoStackoverflow""")
      # <_sre.SRE_Match object at 0x7f9146c8b238>
      print re.match(r'^[^\s]*$', """Welcome toStackoverflow""")
      # None
      print re.match(r'^[^\s]*$', """Welcome
      toStackoverflow""")
      # None
      print re.match(r'^[^\s]*$', """Welcome\ttoStackoverflow""")
      # None
      

      \S[^\s] 相同。引用文档,

      \s

      UNICODE标志未指定时,它匹配任何空白字符,这相当于设置[ \t\n\r\f\v]LOCALE 标志对空间匹配没有额外影响。如果设置了UNICODE,这将匹配字符[ \t\n\r\f\v] 加上Unicode 字符属性数据库中分类为空格的任何内容。

      \S

      UNICODE标志未指定时,匹配任何非空白字符;这相当于设置[^ \t\n\r\f\v] LOCALE 标志对非空白匹配没有额外影响。如果设置了UNICODE,则匹配Unicode 字符属性数据库中未标记为空格的任何字符。

      【讨论】:

      • 'WelcometoStackoverflow' --->别这么认为,OP是1岁零7个月的用户,我也是;)
      • @GrijeshChauhan 想不出别的了 :)
      • 对 SO 上瘾的症状:P
      【解决方案3】:

      试试这个

      [^\s]+
      

      \s 是空格的简写,即空格()、换行符(\n)、制表符(\t)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        • 1970-01-01
        相关资源
        最近更新 更多