如何匹配除空格和新线之外的任何东西?

Aka*_*uja 12 python regex

我有一个字符串,我只想匹配任何字符的字符串,除了空格和新行.什么必须是正则表达式?

我知道除了空格之外的任何东西的正则表达式,即[^ ]+除了新行之外的任何东西的正则表达式[^\n]+(我在Windows上).我无法想象如何将它们聚集在一起.

hwn*_*wnd 13

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

^[^\n ]*$
Run Code Online (Sandbox Code Playgroud)

正则表达式

^              # 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
Run Code Online (Sandbox Code Playgroud)


小智 11

尝试这个

[^\s]+
Run Code Online (Sandbox Code Playgroud)

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


the*_*eye 5

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

r'^[^ \n]*$'
Run Code Online (Sandbox Code Playgroud)

例如,

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
Run Code Online (Sandbox Code Playgroud)

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

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

因此,如果您想排除所有空白字符,那么您可以使用

r'^[^\s]*$'
Run Code Online (Sandbox Code Playgroud)

或者

r'^\S*$'
Run Code Online (Sandbox Code Playgroud)

例如,

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
Run Code Online (Sandbox Code Playgroud)

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

\s

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

\S

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