两段文本:一是:<div id="postmessage_873043" class="t_msgfont">上面的续集:那个樱桃一样大的西瓜问另一个西瓜:&quot;你怎么比我大啊?&quot;<br />
另一个西瓜说:&quot;因为我发育得比较正常呀!&quot;</div>二是: <div id="postmessage_878884" class="t_msgfont">话说三分熟的牛肉跟七分熟的牛肉见面为啥不打招呼?------因为它们不熟。= =||||</div>
用表达式:"t_msgfont[^>]*>(.*)<\/div>",为什么只能获取到第二条的内容,而获取不到第一条的内容呢。谢谢。

解决方案 »

  1.   

    因为第一条有换行,而小数点是不能匹配\n的表达式替换为
    t_msgfont[^>]*>([\s\S]*?)<\/div>
      

  2.   

    哦,谢谢了,我一直以为 . 能匹配所有呢,看来我正则还是不熟悉。谢谢lxcnn,lemlst,coodd。谢谢!
      

  3.   

    表示非贪婪模式.不然[\s\S]*会把<\/div>给匹配掉,这样整个表达式就失败了
      

  4.   

    单行模式下 . 匹配所有字符
    "(?s)t_msgfont[^>]*>(.*?)<\/div>"
      

  5.   

    支持楼上的。http://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regexoptions.aspx正则表达式开头的 (?s) 相当于 RegexOptions.Singleline :
    指定单行模式。更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配)。  
      

  6.   

    另外可参见:
    http://msdn.microsoft.com/zh-cn/library/yd1hzczs.aspx