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

Regex IsMatch匹配异常:为何部分目标字符串无法匹配?

问题原因分析

你的正则表达式Process(.+)\\.+在C#中的实际匹配逻辑和预期不符,导致只有前两个字符串匹配成功,具体原因如下:

正则的实际匹配逻辑

在C#字符串中,\\.会被转义为正则里的\.(专门匹配点字符.),所以你的正则模式实际解析为:

  • Process:匹配开头的固定前缀
  • (.+):贪婪匹配任意1个及以上字符(会尽可能向后匹配)
  • \.+:匹配1个及以上的点字符

前两个字符串匹配成功的原因

前两个字符串的括号内包含多个点字符(比如Bystronic.Ads.GraphQL里的.),正则的贪婪特性会让(.+)一直匹配到字符串中最后一个点的位置,然后\.+匹配这个点及后续的点(如果有),因此整个正则能匹配成功。

后三个字符串匹配失败的原因

  • 第三个字符串:虽然括号内有.,但字符串后半部分(\IO Write Bytes/sec)没有任何点字符,(.+)贪婪匹配到末尾后,无法找到满足\.+的内容,匹配失败。
  • 第四、五个字符串:整个字符串中完全没有点字符,\.+根本找不到匹配项,直接匹配失败。

修正后的正则

如果你想匹配所有Process(...)\\xxx格式的字符串,推荐用C#逐字字符串避免转义混乱,使用更精确的正则:

private static bool IsProcessMatch(string column)
{
    return Regex.IsMatch(column, @"Process\(.+\)\\.+");
}

这个正则的逻辑是:

  • Process\(:匹配固定开头Process(
  • .+:匹配括号内的任意内容
  • \):匹配闭合括号)
  • \\:匹配反斜杠
  • .+:匹配反斜杠后的任意内容(至少1个字符)

这样就能正确匹配你列出的所有测试字符串了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:05:29