请问如何来匹配一个字符串?<li>
<a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
<span>
<br>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
</span>
</li>比如上面的,我想匹配<li> 到</li>中间的所有字符,如何匹配呢?我觉得差不多应该是这样的: @"<li>[^(</li>)]+</li>" 
但是这样好像不对哦,请高手指点,马上结贴

解决方案 »

  1.   

    "[<li>][a-zA-Z_0-9]{0,}[</li>]"
      

  2.   

    这个好像不行吧~
    <li>
    <a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
    <span>
    <br/>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
    </span>
    </li><li>
    <a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
    <span>
    <br/>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
    </span>
    </li><li>
    <a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
    <span>
    <br/>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
    </span>
    </li>关键是这里不止一个</li> 我要匹配第一个<li> </li>
      

  3.   

    我举这个例子不恰当。
    比如:
    <td height=50 style=padding-left:6px>2007年6月6日&nbsp;&nbsp;星期三<br>
    //******从这里 到下面 blu01ssssssss 的部分全部给替换掉
    <a href=http://sms.sohu.com/book/book.php?id=26 target=_blank>
    <font color=#CF6C06>黄历</font></a>
    |<a href=http://sms.sohu.com/book/book.php?id=21 target=_blank>
    <font color=#CF6C06>星座</font></a>
    </td> </tr>
    </table>
    <table border=0 cellpadding=0 cellspacing=0 width=186 bgcolor=#ffffff>
    <tr style=padding-bottom:8px> 
    <td width=100 align=center><a href="./city.php?city=上海" target=_blank><img src="http://img.sms.sohu.com/i/weather/images/yzdy_01.gif" width=83 height=65 alt=阴转多云 border=0 class=img2></a></td>
    <td class=blu01ssssssss>阴转多云<br>
    27℃~21℃<br>
    东风3-4级从 上面 我做注释的地方到 blu01ssssssss 这一部分没有用,所有我就想用个简单的表达式把这一部分全部替换掉
      

  4.   

    前面的那个应该是(<li>)((.|\n)*)(</li>),后面的没看明白
      

  5.   

    取 <li> 和 </li> 之间的子串,使用这个模式,<li>(.+?)</li>,正则表达式选项使用 IgnoreCase | SingleLine,
      

  6.   

    你最初的例子,这样就可以了<li>[\s\S]*?</li>但是如果是只替换第一对,需要改下形式,这是哪里的第一对,整个源字符串的,还是某一<table>内的,位置不同,所用方法会有所不同后面的例子没太明白,如果是替换,需要根据一定条件定位到要替换的字符串
    <a如何定位,<td class=blu01ssssssss>这里的形式是固定的吗
      

  7.   

    <li>.*?</li>
    正则表达式匹配回来是一个数组,第一组就是数组的0了
      

  8.   

    TO: 过客比如说第一个例子吧。。 有好几个 <li>......</li>比如他们都在一个table内
    <table><li>
    <a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
    <span>
    <br/>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
    </span>
    </li><li>
    <a href="Weather.asmx?op=GetWeatherByAreaCode">GetWeatherByAreaCode</a>
    <span>
    <br/>根据城市区号返回Weather_Info类描述的城市天气情况.区号为整数,前面不要加
    </span>
    </li></table>如果想用你说的那个简单方法来匹配第一个<li> </li> 怎么写呢? 谢谢咯~
      

  9.   

    顺便问下:<li>[\s\S]*?</li>  那个问号是什么意思?
      

  10.   

    那这样就行了,只替换第一对<li>...</li>string yourStr = ........;
    string resultStr = Regex.Replace(yourStr, @"(<table>[\s\S]*?)<li>[\s\S]*?</li>", "$1", RegexOptions.IgnoreCase);其中<table>只是按你的例子写的,实际应用中换成能够定位到这一table的字符串<li>[\s\S]*?</li>  这里的“?”是非贪婪模式,[\s\S]为匹配任意一个字符,这个正则的意思就是,从<li>开始匹配,匹配到第一次出现</li>为止
      

  11.   

    匹配<li> 到</li>中间的所有字符----------------------------------------------------------------
    最简单答案:@"(?<=<li>).*?(?=</li>) "