首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

正则表达式有关问题:匹配字符串<sup>与</sup>之外的逗号

2012-09-06 
正则表达式问题:匹配字符串sup与/sup之外的逗号源HTML字符串:HTML codeabcsup1,2/sup,defdfesup

正则表达式问题:匹配字符串<sup>与</sup>之外的逗号
源HTML字符串:

HTML code
abc<sup>1,2</sup>,defdfe<sup>3,4</sup>,ghijdfd,fdfdk

需要把逗号替换为分号,但是<sup>和</sup>之间的逗号需要保留。
替换结果为:
HTML code
abc<sup>1,2</sup>;defdfe<sup>3,4</sup>;ghijdfd;fdfdk




[解决办法]
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex("(?<!<sup[^>]*>[^<]*),(?![^<]*</sup>)");
string result = r.Replace("abc<sup>1,2</sup>,defdfe<sup>3,4</sup>,ghijdfd,fdfdk", ";");
试试
[解决办法]
这种需求比较适合用委托来处理

C# code
Regex reg = new Regex(@"(?i)(?<=^|</sup>).+?(?=<sup>|$)");string result = reg.Replace(yourStr, delegate(Match m) { return m.Value.Replace(",", ";"); });
[解决办法]
C# code
 var testSource = "abc,<sup>1,2,</sup>,defdfe<sup>3,4</sup>,ghijdfd,fdfdk<sup><span>,ss</span></sup>456464,";               var pattern = @",(?!(?:(?!</?sup\b).)*</sup\s*>)";               var resultStr = Regex.Replace(testSource,pattern,";",RegexOptions.IgnoreCase);               Console.WriteLine(resultStr); 

热点排行