abc ,def<sup id=1 >1,*,#</sup>, xef<sup id=2 >1</sup>, ejf<sup  id=3 >x,2,a</sup> ,sdf<sup>1,2,a</sup>, eidf<sup>a</sup>想用正则表达式把上面字符串中 <sup>和<sup/> 中间的逗号 替换成</sup>,<sup> 其余逗号不做替换。
结果如下:abc ,def<sup>1</sup>,<sup>*,#</sup>, xef<sup id=2 >1</sup>, ejf<sup  id=3 >x</sup>,<sup>2</sup>,<sup>a</sup> ,sdf<sup>1</sup>,<sup>2</sup>,<sup>a</sup>, eidf<sup>a</sup>

解决方案 »

  1.   

    string s = "abc ,def<sup id=1 >1,*,#</sup>, xef<sup id=2 >1</sup>, ejf<sup  id=3 >x,2,a</sup> ,sdf<sup>1,2,a</sup>, eidf<sup>a</sup>";
    string result = Regex.Replace(s,@"(?<=<sup>((?!</?sup).)+?),(?=.+</sup>)","</sup>,<sup>");
      

  2.   

    如果你描述的不准确,还包含<sup....>的情况。这样。string s = "abc ,def<sup id=1 >1,*,#</sup>, xef<sup id=2 >1</sup>, ejf<sup  id=3 >x,2,a</sup> ,sdf<sup>1,2,a</sup>, eidf<sup>a</sup>";
    string result = Regex.Replace(s, @"(?<=<sup[^>]*>((?!</?sup).)+?),(?=.+</sup>)", "</sup>,<sup>");
      

  3.   

    wuyazhe是正则方面的专家 ^_^
      

  4.   

    <sup id=1 > 这种情况的 没有被替换,不过已经很不错了。
      

  5.   

    完成我的需求,现在就结贴!谢谢wuyazhe专家!
      

  6.   

    因为你最初说是<sup>所以按你规则写的,但后面仔细看,你的字符串中有
    <sup  id=3 >x,2,a</sup>
    就有了3楼的回复。<sup id=1 >1,*,#</sup>这个用3楼给你的方法应该是被替换掉了吧,你试试。