C#读取了一个网页,其中片段:

<div>
<ul>
<dt>a</dt>
<dd>a1</dd>
<dt>b</dt>
<dd>b1</dd>
<dt>c</dt>
<dd>c1</dd>
</ul>
</div>

如何通过正则表达式,获取以下片段?
<dt>a</dt>
<dd>a1</dd>
<dt>b</dt>
<dd>b1</dd>

解决方案 »

  1.   

    你有什么规则么 我就随便写个了 也许不是你想要的
    <(dt|dd)>(a1?|b1?)</(dt|dd)>
      

  2.   

    (?i)<(d[td])>[^<>]+</\1>
      

  3.   

    (?s)(?<=<ul[^>]*>)(?:\s*<dt\b[^>]*>(?:(?!</dd\b).)*</dd>\s*){2}
      

  4.   

    string str="字符串";
    str = Regex.Match(str, @"(?is)(?<=<ul>)(\s*<(\w+)[^>]*>.*?</\2>){1,4}").Value;
      

  5.   

    html解析就是html解析,不要扯上“正则”。你可以搜索一下“.net平台html解析工具”,看看都有什么解析html的软件包可以在编程中调用。反之,如果你是问正则表达式,那么就不要说什么“html解析”了。只是匹配简单的字母,跟进行正确的语法分析从而得到html elements树相比,实在是“泥土与陶瓷”的区别。
      

  6.   

    我最终写的是这个
    (?<=<dt>(.*)</dt>(\\s*)<dd>)(.*)(?=</dd>)。