用正则表达式替换字符串

时间:2023-01-03 13:12:45
想用正则表达式替换字符串,但是其中用尖括号括住的不能替换

举例:

string a = "fds<font style=\"color:#FFFF37\">st</font>asbc";//源字符串
string b = "<.*?>";//不能被替换的正则表达式
string c = "s";//符合条件的字符串正则表达式
string d = "ABC";//要替换成的字符串正则表达式


要求:要将红色的“s”替换成“ABC”,黄色的不能替换
"fd s<font  style=\"color:#FFFF37\"> st</font>a sbc"

最终的结果是:"fdABC<font style=\"color:#FFFF37\">ABCt</font>aABCbc"

注意:不要把程序写死了,因为尖括号内的内容是不确定的,这里用<font>只是举个例子

5 个解决方案

#1


你不应该用正则表达式,你应该找这行HTML代码哪些字符使用了 红色 颜色的CSS

#2


楼上的大哥没有明白我的意思,我用颜色标注只是为我大家更容易理解我要替换的地方,并不是要修改颜色。

这里在补充说一下:只替换a变量中在尖括号之外的“s”,在尖括号中的“style”里的“s”不能把它替换掉。
string a = "fds<font style=\"color:#FFFF37\">st</font>asbc";//源字符串

#3


我写了一个,效率不考虑:
		string s = "fds<font style=\"color:#FFFF37\">st</font>asbc";
string[] results = Regex.Split(s, @"(?is)(<!?/?[^>]*/?>)");
results = results.Select(x => x.StartsWith("<") && x.EndsWith(">") ? x : x = x.Replace("s", "ABC")).ToArray();
string r = string.Concat(results);
Response.Write(Server.HtmlEncode(r));

#4


要是这个字符串咋替换?
"fdsads<font style=\"color:#FFFF37\">asst</font>asbsc"

#5


string a = "fds<font style=\"color:#FFFF37\">st</font>abc";
string b = "s";//要获取的值
Regex reg=new Regex("(?<!<[^>]*)"+b);
a=reg.Replace(a,"ABC");

#1


你不应该用正则表达式,你应该找这行HTML代码哪些字符使用了 红色 颜色的CSS

#2


楼上的大哥没有明白我的意思,我用颜色标注只是为我大家更容易理解我要替换的地方,并不是要修改颜色。

这里在补充说一下:只替换a变量中在尖括号之外的“s”,在尖括号中的“style”里的“s”不能把它替换掉。
string a = "fds<font style=\"color:#FFFF37\">st</font>asbc";//源字符串

#3


我写了一个,效率不考虑:
		string s = "fds<font style=\"color:#FFFF37\">st</font>asbc";
string[] results = Regex.Split(s, @"(?is)(<!?/?[^>]*/?>)");
results = results.Select(x => x.StartsWith("<") && x.EndsWith(">") ? x : x = x.Replace("s", "ABC")).ToArray();
string r = string.Concat(results);
Response.Write(Server.HtmlEncode(r));

#4


要是这个字符串咋替换?
"fdsads<font style=\"color:#FFFF37\">asst</font>asbsc"

#5


string a = "fds<font style=\"color:#FFFF37\">st</font>abc";
string b = "s";//要获取的值
Regex reg=new Regex("(?<!<[^>]*)"+b);
a=reg.Replace(a,"ABC");