在 R 正则表达式中匹配换行符
Gustavo du Mortier
2023年1月30日
2020年12月19日
虽然正则表达式(简称 regex
)是一种相当通用的定义字符串模式的方法,但这些模式在不同的平台上可能会有不同的表现,特别是当正则表达式打算匹配特殊字符时,例如换行符。在本文中,我们将分析在 R 中正则表达式中包含换行符的不同方式。
不同操作系统下的换行符序列
在 Linux 环境下,模式\n
与换行序列相匹配。然而,在 Windows 中,换行符与\r\n
匹配,在旧版 Mac 中,与\r
匹配。
如果你需要一个正则表达式来匹配这些平台上的换行符序列,你可以使用模式\r?\n
来匹配\n
和\r\n
行终止字符序列。
有了这个选项,你就可以覆盖 Linux 和 Windows 环境了,尽管这个模式不能正确匹配旧版 Mac 的换行符。为了覆盖旧版 Mac,你可以使用同样与\r
匹配的模式\r?\n|\r
。这个模式更正确的版本是 (\r\n|\r|\n)
。
使用换行序列测试 Regex
许多网站提供了测试正则表达式的可能性。大多数网站的工作方式就像 Linux 环境一样,在测试\n
模式时,会在带有换行符的字符串上找到匹配。但是当你测试\r\n
模式时,他们却找不到匹配。这些网站的例子是 Regex101 和 Regexr。
其他测试网站可能会出现不同的行为,就像不同的操作环境一样。例如,Regex Storm的工作方式更像 Windows 平台,在换行符和\r\n
模式的字符串之间寻找匹配。