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

本文关键字:字符串 替换 正则表达式 | 更新日期: 2023-09-27 18:35:59

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

我只有声明

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

我也有新媒体

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

我的目标是使用正则表达式将旧媒体替换为新媒体

我在这里做了这个任务

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仅标记媒体查询,以便我可以替换特定文本?

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

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