C# 使用正则表达式替换字符串
我正在尝试使用c替换CSS文本中的媒体查询# 我只有申报单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\)
@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)