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

如何在C#中通过Regex正确引用关键词变量进行匹配?

C# Regex通过变量引用关键词匹配失败的解决方法

问题场景

需要用正则表达式在字符串列表中匹配指定关键词(例如“SOS fire”):

  • 直接将关键词写死在正则表达式中时,匹配正常;
  • 通过变量keyword引用关键词时,匹配失败。

错误代码示例

string keyword = "SOS fire";
// 未转义直接使用变量,若关键词含正则元字符会导致匹配失败
Regex regex = new Regex(keyword);
List<string> targetStrings = new List<string> { "SOS fire alert", "routine check" };
var matchedResults = targetStrings.Where(s => regex.IsMatch(s)).ToList();
// 预期匹配到"SOS fire alert",实际可能因元字符解析问题匹配失败

解决方法

核心问题是:当关键词包含正则元字符(如.、*、+等)时,直接用变量传入正则表达式会被引擎解析为特殊语法,而非普通文本。需使用Regex.Escape()方法对关键词进行转义,将元字符转换为字面量。

修正后的代码

string keyword = "SOS fire";
// 对关键词进行正则转义,确保所有字符被当作普通文本处理
Regex regex = new Regex(Regex.Escape(keyword));
List<string> targetStrings = new List<string> { "SOS fire alert", "routine check" };
var matchedResults = targetStrings.Where(s => regex.IsMatch(s)).ToList();
// 此时可正确匹配到包含关键词的字符串

补充说明

  • 如果需要完全匹配(即字符串与关键词完全一致),可在转义后的关键词前后添加锚定符:
    Regex regex = new Regex($"^{Regex.Escape(keyword)}$");
    
  • Regex.Escape()会自动处理所有正则特殊字符,无需手动逐个转义,适配各种关键词场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:41:58