Python 的正则表达式支持 多行模式,将每行文字分别匹配。然而各种操作系统里,换行符的表示法各不相同,会导致 Python 不能正确使用多行模式。 目录花式换行符不同操作系统下, 换行符的表示方法 也不同。主要有以下三种:
测试 Python 的表现如果没有正确识别换行符,就无法按照期望,进入多行模式的匹配模式。准备使用下面的脚本,检验各种换行符下,不同版本Python 能否正确进入多行模式。脚本如下: import res='hello\r\nbye\r\n'print(re.findall(r'^\w+$',s,re.M)) 如果结果是 测试结果
如何分辨换行符那么面对传来的字节流,无论是来自文件、网络,如何知道其中的换行符是那种呢?我们需要以将字符串用二进制形式表达。 下面这个脚本可以观察字节流的二进制表示:
得到结果为: 1101000 1100101 1101100 1101100 1101111 1010 #\n1101000 1100101 1101100 1101100 1101111 1101 1010 #\r\n1101000 1100101 1101100 1101100 1101111 1101 #\r 如何纠正那么怎么将换行符调整到 适合 Python 进入多行模式的呢?可以使用
或者 print(re.findall(r'^\w+$', re.sub(r'\r','',s), re.M)) 将所有的 |
|