2014-12-31 3 views
1

Я пытаюсь заменить медиа-запрос в CSS текст с использованием C#Заменить строку с помощью регулярных выражений

У меня есть только заявление

@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); 

где

[email protected] screen and (min-width:1500px) 

это можно отметить только медиа-запрос с использованием Media_declaration, так что я могу заменить конкретный текст?

+0

Итак, вы хотите сохранить медиа-линию и заменить ее ниже '{.g {border: 1px solid red; }} '?? – hwnd

+0

Я бы хотел заменить медиа-линию и под ней, но заменить ее ниже, это тоже может быть хорошим решением. – baaroz

+0

Я все еще смущен, вы пытаетесь это сделать? http://ideone.com/2LKKfL – hwnd

ответ

0

Выражение, которое вы использовали, соответствует всем текстам до последней фигурной скобки, поскольку использует (в двух местах) жадный.*. Используйте вместо этого non-greedy.*?.

Смежные вопросы