Python正则表达式只匹配空间

时间:2016-07-02 16:53:31

标签: python regex

在python3中,我如何精确匹配空白字符而不是换行符\ n或tab \ t?

我已经看到了来自Regex match space not \n\s+[^\n]回答,但是对于以下示例,它不起作用:

a='rasd\nsa sd'
print(re.search(r'\s+[^ \n]',a))

结果是<_sre.SRE_Match object; span=(4, 6), match='\ns'>,这是匹配的换行符。

2 个答案:

答案 0 :(得分:12)

不需要特殊群体。只需创建一个带空格字符的正则表达式。空格字符没有任何特殊含义,它只是意味着匹配空格&#34;。

RE = re.compile(' +')

所以你的情况

a='rasd\nsa sd'
print(re.search(' +', a))

会给出

<_sre.SRE_Match object; span=(7, 8), match=' '>

答案 1 :(得分:8)

如果要匹配除换行符和选项卡之外的一个或多个空白字符,请使用

r"[^\S\n\t]+"

[^\S]匹配任何不是非空格的字符=任何空白字符。但是,由于字符类是否定的,当您向其添加字符时,它们将被排除在匹配之外。

Python demo

import re
a='rasd\nsa sd'
print(re.findall(r'[^\S\n\t]+',a))
# => [' ']

更多注意事项:\s matches [ \t\n\r\f\v]如果使用ASCII标志。因此,如果您计划仅匹配ASCII,您也可以使用[ \r\f\v]来排除所需的字符。如果您需要使用Unicode字符串,上面的解决方案是可行的。