C# 如何在C中将变量转换为正则表达式#

C# 如何在C中将变量转换为正则表达式#,c#,regex,concat,C#,Regex,Concat,我试图在c#中将一个变量连接到一个regen,但它不起作用 string color_id = "sdsdssd"; Match variations = Regex.Match (data, @""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")", RegexOptions.IgnoreCase);@""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W

我试图在c#中将一个变量连接到一个regen,但它不起作用

string color_id = "sdsdssd";
Match variations = Regex.Match (data, @""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")", RegexOptions.IgnoreCase);@""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")";
但上述措施并不奏效

string color_id = "sdsdssd";
Match variations = Regex.Match (data, @""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")", RegexOptions.IgnoreCase);@""+color_id+"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")";

如何在c#

中将起始元素处的变量连接到正则表达式
@
标识符只会影响紧跟其后的文字字符串-您需要将其应用于需要它的每个字符串:

Match variations = Regex.Match (data,color_id +                     
                                     @"_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")", 
                                RegexOptions.IgnoreCase);

您的代码不起作用,因为您似乎已将其放入代码中两次

@“+color\u id+”\u[^\”“]\\”\ W\,\“size\”:\s\W.*?businessCatalogItemId:\”)

删除该选项将允许连接工作

或者,您可以使用String.Format创建模式

string pattern = String.Format("@{0}_[^\""]*\""\W\,\""sizes\""\:\s*\W.*?businessCatalogItemId"":\"")", color_id)
Match variations = Regex.Match (data, pattern, RegexOptions.IgnoreCase);

在String.Format中,它将用color_id替换{0}。您可以使用它在字符串中插入多个变量

很难说清楚你在问什么。你想要的结果是什么?我想把这个“SDSSD”插入到颜色的位置。你说的“不工作”是什么意思?你的电脑着火了吗?它没有编译吗?有没有什么特别的症状,或者你只是突然被一种可怕的悲伤和徒劳的感觉征服了,好像生活是一长串莫名其妙的呼救声?请不要再发帖了。请参见下面的答案。我已针对伪
“sdssd\u ddddd\”、\“size\”:dbusinessCatalogItemId\:\“
字符串进行了测试。请提供您的和预期的输出。看起来这些工作已被放弃。错误解析'sdssd\u[^\']*\\ W\,\“size\”\:\s*\W.?businessCatalogItemId”:\“”“--太多”)。但是逐字字符串文字不会让您过多地切换模式,请使用
Regex.Escape(color\u id)+@“\u[^”“]*”“\ W”,“size”“:\s*\W.*?businessCatalogItemId”“:”“”
Regex.Escape()
如果变量从不包含非字母数字符号,则可能是多余的)很难区分什么是代码,什么是字符串中的数据,或者你试图转义什么引用——我试图根据你发布的内容做出假设,但可能弄错了。关键是
@
仅适用于紧跟其后的文字字符串,因此
@“string1”+b+“string2”
不会将
@
应用于
string2