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

为何Linux下生效的VERSION_ID正则表达式在C#中匹配失败?

问题原因及解决办法

核心差异:正则引擎的多行模式处理

grep -oP默认按行处理文本,^和$会匹配每行的开头和结尾;但C#的Regex.Match默认是单行模式,^和$只会匹配整个字符串的开头和结尾。而/etc/os-release的内容是多行结构(每行一个配置项),原正则无法匹配到单独行的VERSION_ID="20.04",导致匹配失败。

解决步骤

  1. 开启多行模式:在C#中添加RegexOptions.Multiline选项,让^和$匹配每行的首尾。
  2. 调整后的代码示例:
string regex = @"(?<=^VERSION_ID="").*(?=""$)";
Match match = Regex.Match(response, regex, RegexOptions.Multiline);

if (match.Success)
    Console.WriteLine(match.Value);
else
    Console.WriteLine("Not match");

额外说明

如果读取的文本包含Windows风格换行符(\r\n),无需额外处理,.NET正则引擎会自动兼容不同换行格式,只要开启多行模式即可正常匹配。

内容的提问来源于stack exchange,提问作者Darshit Gandhi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:37:02