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

如何在C#中使用Regex实现带变量的实时对象搜索?

在C#中通过参数动态生成Regex匹配模式

你直接把变量search写进字符串里的方式是行不通的——C#会把[search]当成字面量处理,不会替换成变量的实际值。要实现动态生成正则模式,分两种常见场景处理:

场景1:搜索内容是普通字符(无正则元字符)

如果search参数只是普通字母、数字这类无特殊正则含义的字符,直接用字符串插值或String.Format拼接模式即可:

// 传入的搜索参数
string search = "M";
// 用字符串插值生成正则模式
string pattern = $@"\b[{search}]\w+";
Regex rg = new Regex(pattern);

场景2:搜索内容可能包含正则元字符

如果search参数可能包含.、*、[、\这类正则元字符,直接拼接会破坏正则结构,导致匹配出错。必须先用Regex.Escape()方法转义特殊字符:

// 传入包含正则元字符的参数,比如"[a"
string search = "[a";
// 转义所有正则特殊字符
string escapedSearch = Regex.Escape(search);
// 生成安全的正则模式
string pattern = $@"\b[{escapedSearch}]\w+";
Regex rg = new Regex(pattern);

额外说明

如果你想要的是匹配以整个search字符串开头的单词(而非字符集中的任意字符开头),需要去掉模式里的[],示例:

string pattern = $@"\b{escapedSearch}\w+";

这样当search是"Mc"时,会匹配"McDonald"这类单词,而非以M或c开头的单词。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:39:42