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

时间:2014-12-31 18:20:36

标签: c# regex

我正在尝试使用c#

替换CSS 文本中的媒体查询

我只有声明

 @media  screen and (min-width:1500px)

我也有新媒体

@media  screen and (min-width:1500px)
{  
 .g{
     border:1px solid red;
   }
}

我的目标是使用regexr

替换旧媒体

我在这里做了这个任务

http://regexr.com/3a58a

使用此表达式

@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#中,它似乎标记了媒体及其下的所有角色,而不是仅标记媒体。

这是处理案例的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);

,其中

Media_declaration=@media screen and (min-width:1500px)

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

1 个答案:

答案 0 :(得分:0)

您使用的表达式匹配最后一个大括号的所有文本,因为它使用(在两个地方) greedy .*。请改用 non-greedy .*?