这;样;的正 则 表&达;式如;何写呢
去除该字符串中的分号,但是需要保留“ ”“ ”“&”等等这样网页转义字符中的分号不能被去除。

解决方案 »

  1.   

    string result = Regex.Replace("这;样;的正&#xa0;则&nbsp;表&amp;达;式如;何写呢",@"(?<!&[a-z\d#]+);","");
      

  2.   

    (?<!&[a-z\d#]+);
    逆序否定环视
    (?<!&[a-z\d#]+);
    (?<!表达式)
    表示后续匹配不能跟在这个“表达式”后面
    (?<!&[a-z\d#]+);
    实际只匹配一个常量字符;(?<!&[a-z\d#]+);
    & 常量字符 &
    [a-z\d#]表示字母a-z集合并上0-9的数字集合并上常量字符#
    +一次或多次。尽可能多的匹配。贪婪模式。整个意思为:
    匹配前面不是&[数字字母#]一个或多个的重复的常量字符;仔细看看,还是优化一下,加上(?i)模式修饰符,表示不区分大小写。因为html是大小写不敏感的。改为:
    string result = Regex.Replace("这;样;的正&#xa0;则&nbsp;表&amp;达;式如;何写呢",@"(?i)(?<!&[a-z\d#]+);","");