【发布时间】:2014-04-23 05:08:10
【问题描述】:
我有一个字符串,我只想匹配除空格和换行之外的任何字符的字符串。这必须是什么正则表达式?
我知道除空格以外的任何东西的正则表达式,即[^ ]+ 和除新行[^\n]+ 之外的任何东西的正则表达式(我在 Windows 上)。我不知道如何将它们组合在一起。
【问题讨论】:
我有一个字符串,我只想匹配除空格和换行之外的任何字符的字符串。这必须是什么正则表达式?
我知道除空格以外的任何东西的正则表达式,即[^ ]+ 和除新行[^\n]+ 之外的任何东西的正则表达式(我在 Windows 上)。我不知道如何将它们组合在一起。
【问题讨论】:
您可以将空格字符添加到要排除的字符类中。
^[^\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
【讨论】:
如果您只想排除空格和换行符,那么您可能需要使用
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 字符属性数据库中未标记为空格的任何字符。
【讨论】:
试试这个
[^\s]+
\s 是空格的简写,即空格()、换行符(\n)、制表符(\t)。
【讨论】: