在 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
模式的字串之間尋找匹配。