2015-08-17 2 views
2

У меня есть текстовая переменная, которая может содержать много ((VAR=var_name)). Я хочу, чтобы заменить ((VAR=var_name)) по var_name только в src= (так, ни в href=, напримерC# regexp, заменяя только частью текста

sText = "some text href=\"sometext((VAR=XXXX))sometext((VAR=YYYYY))\" 
src=\"sometext((VAR=XXXX))sometext((VAR=YYYYY)) \" some text some text 
href=\"sometext((VAR=XXXX))sometext((VAR=YYYYY))\" 
src=\"sometext((VAR=XXXX))sometext((VAR=YYYYY))\" some text"; 

Я хочу, чтобы после замены:.

sText = "some text href=\"sometext((VAR=XXXX))sometext((VAR=YYYYY))\" 
src=\"sometext**XXXX**sometext**YYYYY**\" some text some text 
href=\"sometext((VAR=XXXX))sometext((VAR=YYYYY))\" 
src=\"sometext**XXXX**sometext**YYYYY**\" some text"; 

Вы получили идея?

JC

+2

Почему так много примеров «обфускации»? Это HTML? Используйте парсер HTML. –

ответ

0
string srcPattern = @"src="".+?"""; 
string varPattern = @"\(\(VAR=(.+?)\)\)"; 

string result = Regex.Replace(sText, srcPattern, 
    m => Regex.Replace(m.Value, varPattern, n => "**" + n.Groups[1].Value + "**")); 

Первое регулярное выражение соответствует строке src = "...". Второе регулярное выражение заменяет каждое выражение в скобках на его значение.

+0

@JAL К сожалению, я не являюсь носителем английского языка. Мне легко писать код, но сложно написать описание на английском языке. –

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