Go 正则表达式 regexp 使用$匹配行尾时在 CRLF(\r\n)上不工作

Go 正则表达式 regexp 使用$匹配行尾时在 CRLF(\r\n)上不工作

💡 原文中文,约600字,阅读约需2分钟。
📝

内容提要

正则表达式中的 ^ 和 $ 用于匹配行首和行尾。在多行模式下,Go 语言使用 `(?m)` 来实现,但仅支持 LF 换行符,不支持 CRLF 和 CR。对于 Windows 文件中的 CRLF,可以用 `strings.ReplaceAll` 替换。Rust 的正则库也有类似问题。

🎯

关键要点

  • 正则表达式中的 ^ 用于匹配行首,$ 用于匹配行尾。

  • 在多行模式下,Go 语言使用 (?m) 来实现行首和行尾的匹配。

  • Go 语言的多行匹配仅支持 LF 换行符,不支持 CRLF 和 CR。

  • 可以使用 strings.ReplaceAll 替换 Windows 文件中的 CRLF。

  • Rust 的正则库也存在类似的换行符匹配问题。

➡️

继续阅读