You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何含\r\n换行符的文件使Regex匹配失败?如何兼容两种换行?

正则匹配\r\n换行文件失败的原因及解决方法

失败原因

你启用的Multiline模式下,正则中的$仅匹配换行符(\n)的前一个位置。当文件使用\r\n作为换行时,每行末尾会多出一个\r字符。而你的原正则结尾部分([\\*?#\w.]+\.sql[\t ]*)+$里,[\t ]*只能匹配空格或制表符,无法匹配\r,导致正则无法触发行尾的$匹配条件,最终匹配失败。

兼容\r\n和\n的解决方案

无需手动替换换行符,直接修改正则即可,提供两种实用方案:

方案1:在行尾允许可选的\r

在正则末尾的$前添加\r?,让行尾的回车符变为可选匹配项:

@"^([ \t]*Dependencies[\t ]*:[\t ]*)(([\\*?#\w.]+\.sql[\t ]*)+)\r?$"

这个修改最小,仅针对行尾的\r做兼容,不影响原有匹配逻辑。

方案2:扩大空白匹配范围

把正则中所有匹配空白的[\t ]*替换为[\t \r]*,让空白匹配规则包含回车符:

@"^([\t \r]*Dependencies[\t \r]*:[\t \r]*)(([\\*?#\w.]+\.sql[\t \r]*)+)$"

此方案更灵活,能处理行内任意位置出现的\r字符,适合复杂的空白场景。

注:你启用的IgnorePatternWhitespace选项仅会忽略正则表达式里的格式空白(比如正则编写时的换行或空格),不会影响字符类里的[\t \r]这类匹配规则,可放心使用。

内容的提问来源于stack exchange,提问作者Rachel Ambler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:55:21