简体   繁体   English

c#regexp,仅替换部分文本

[英]c# regexp , replacing only in part of text

I have a text variable which can contain many ( (VAR=var_name )). 我有一个文本变量,可以包含很多( (VAR=var_name ))。 I want to replace (( VAR=var_name )) by the var_name only in src= (so, no in href= for instance. 我只想在src=中用var_name替换(( VAR=var_name ))(因此,例如在href=没有)。

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";

I want to get after replacing : 我要更换后得到:

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";

Have you got an idea ? 你有个主意吗?

JC JC

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

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

The first regular expression match the string src = "...". 第一个正则表达式匹配字符串src =“ ...”。 While the second regular expression replaces every statement in brackets on its value. 而第二个正则表达式将替换其值放在方括号中的每个语句。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM