Dimitry Dimitry - 9 months ago 26
Python Question

Python regex match space only

In python3, how do I match exactly whitespace character and not newline \n or tab \t?

I've seen the

answer from Regex match space not \n answer, but for the following example it does not work:

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

Result is
<_sre.SRE_Match object; span=(4, 6), match='\ns'>
, which is the newline matched.


If you want to match 1 or more whitespace chars except the newline and a tab use


The [^\S] matches any char that is not a non-whitespace = any char that is whitespace. However, since the character class is a negated one, when you add characters to it they are excluded from matching.

Python demo:

import re
a='rasd\nsa sd'
# => [' ']

Some more considerations: \s matches [ \t\n\r\f\v] if ASCII flag is used. So, if you plan to only match ASCII, you might as well use [ \r\f\v] to exclude the chars you want. If you need to work with Unicode strings, the solution above is a viable one.