在python3中,如何精确匹配空白字符而不是换行符\n或tab\t?
我已经看到Regex匹配空间的\s+[^\n]答案    不是答案,但对于以下示例它不起作用:
a='rasd\nsa sd'
print(re.search(r'\s+[^ \n]',a))
结果是<_sre.SRE_Match object; span=(4, 6), match='\ns'>,匹配的换行符.
Res*_*nce 15
不需要特殊团体.只需创建一个带空格字符的正则表达式.空格字符没有任何特殊含义,它只是意味着"匹配空间".
RE = re.compile(' +')
所以对你的情况
a='rasd\nsa sd'
print(re.search(' +', a))
会给
<_sre.SRE_Match object; span=(7, 8), match=' '>
如果要匹配1个或多个空格字符,除了换行符和选项卡使用
r"[^\S\n\t]+"
该[^\S]匹配不是非空白任何字符=任何字符是空格.但是,由于字符类是否定的,当您向其添加字符时,它们将被排除在匹配之外.
import re
a='rasd\nsa sd'
print(re.findall(r'[^\S\n\t]+',a))
# => [' ']
更多注意事项:如果使用ASCII标志,则\s匹配[ \t\n\r\f\v].因此,如果您计划仅匹配ASCII,您也可以使用它[ \r\f\v]来排除所需的字符.如果您需要使用Unicode字符串,上面的解决方案是可行的.
| 归档时间: | 
 | 
| 查看次数: | 50031 次 | 
| 最近记录: |