Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式替换字符串_C#_Regex - Fatal编程技术网

C# 使用正则表达式替换字符串

C# 使用正则表达式替换字符串,c#,regex,C#,Regex,我正在尝试使用c替换CSS文本中的媒体查询# 我只有申报单 @media screen and (min-width:1500px) 我也有新媒体 @media screen and (min-width:1500px) { .g{ border:1px solid red; } } 我的目标是使用regexr用新介质替换旧介质 我设法在这里完成了这项任务 使用这个表达式 @media\s*screen\sand[\s*]\(min-width:1500px\)

我正在尝试使用c替换CSS文本中的媒体查询#

我只有申报单

 @media  screen and (min-width:1500px)
我也有新媒体

@media  screen and (min-width:1500px)
{  
 .g{
     border:1px solid red;
   }
}
我的目标是使用regexr用新介质替换旧介质

我设法在这里完成了这项任务

使用这个表达式

@media\s*screen\sand[\s*]\(min-width:1500px\)([\s,\n,\r]*\{[\s,\n,\r]*.*[\s,\n,\r]*[\s,\n,\r]*.*[\s,\n,\r]*\}*\s*\})
但在c#中,它似乎标记了媒体及其下的所有角色,而不是仅标记媒体

这是处理这件案子的指挥官

  NewCss= Regex.Replace(cssContent, Media_declaration.Replace(" ", "[\\s,\\n,\\r]*").Replace("(", "\\(").Replace(")", "\\)") + @"([\s,\n,\r]*\{[\s,\n,\r]*.*[\s,\n,\r]*[\s,\n,\r]*.*[\s,\n,\r]*\}*\s*\})", new MatchEvaluator(mediaNeVal), RegexOptions.Singleline);
在哪里


是否可以使用媒体声明仅标记媒体查询,以便替换特定文本?

您使用的表达式匹配到最后一个大括号的所有文本,因为它(在两个位置)使用贪婪的
*
。使用非贪婪的
*?

因此您希望保留媒体行并在其下方替换
{.g{border:1px solid red;}}
?我想替换媒体行及其下方,但在其下方替换也是一个很好的解决方案。我仍然感到困惑,您是否正在尝试这样做?现在我很清楚,我使用的表达式不正确。我有一个css文件,其中包含许多角色和媒体查询。我想替换文本中的特定媒体。这种媒体可以是一行或单独一行,正则表达式应该为所有情况提供解决方案;媒体屏幕和屏幕(最小宽度:1500px)以及新媒体版本:@;媒体屏幕和(最小宽度:1500px){.g{font-family:Georgia;}}新值应替换旧媒体
Media_declaration=@media screen and (min-width:1500px)