匹配跨平台换行符的正则表达式

63
我的程序可以接受带有换行符 \n、\r\n 或 \r(例如 Unix、PC 或 Mac 格式)的数据。
最佳方法是构建一个正则表达式,可以匹配任何编码方式?
或者,我可以在输入时使用 universal_newline 支持,但现在我想看看正则表达式是什么。

11
请注意,\r 是旧的 Mac 风格(我指的是“OS 9 及之前”的老风格)。任何运行 OS X(即在1999年之后生产的)的 Mac 电脑都将像其他 Unix 系统一样使用 \n - Chris Lutz
何时匹配换行符比使用'$'匹配行尾更有用? - tonfa
2
@tonfa:当通过正则表达式将文件分割成行时。 - too much php
1
@太多的PHP 但是str.splitlines()不也可以很好地工作吗? - tonfa
1
@tonfa:好的,虽然这并不经常需要,但对于其他没有像splitlines()这样方便的函数的语言来说,了解这一点是很有用的。 - too much php
2个回答

98

当我想要精确匹配时,我使用的正则表达式是"\r\n?|\n"

如果我不关心一致性或空行,我会使用"[\r\n]+ " ,我想这可以使我的程序快大约0.2%。


3
通常情况下,当我不关注换行符时,我也不会关注空格。 - Brad Gilbert
你的程序如何更快? - sehe

10

这个模式可以简化为 \r?\n,以获得一些性能提升,因为您可能不需要处理旧的 Mac 样式(自2002年2月起不支持OS 9)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接