求助:用正则表达式从多行字符串中抽取闭合字符串

求助:用正则表达式从多行字符串中抽取闭合字符串

我有一段字符串需要抽取

<PRE>







</PRE>


我的问题是,如何用正则表达式抽取闭合<PRE></PRE>的多行字符串?
我在perl里面尝试了<PRE>[.|\n]*</PRE>,可是不行。我的代码是这么写的
//通过一种方法将所有的字符流传到$htmlcode中
my $htmlcode;
if($htmlcode =~ /<PRE>[.|\n]*</PRE>/) {
    print "found\n";
    print $1;
}



多谢大侠指点。

$htmlcode =~ /<PRE>(.*)</PRE>/s
or
$htmlcode =~ /<PRE>(.*)</PRE>/m
HTML:: Parser



[Copy to clipboard] [ - ]
CODE:
use strict;
use warnings;

open my $fd,"<tests.txt";
undef $/;
my $word=<$fd>;
while($word=~/<PRE>(.*?)<\/PRE>/sg){
    print "found","\n",'--'x20,"\n";
    print $1,"\n",'--'x20,"\n";
}

非常感谢各位的帮忙。
回二楼Nosferatu,我用的选项是sgim,都不行;我不知道什么原因;
回三楼sewenew,谢谢,我使用的是HTML:: Parser,但是在<RE></PRE>中有其他的带<的字符串,这个包会解析出错,不能解释完全,所以不得已用了正则表达式;
回四楼,你的方法奏效,能文高人(.*?)是怎么会事么?解释下下
是不是是.*表示非换行字符再加?就可以表示所有了啊?
.*?

.  任意字符
* 任意多个(之前的内容)
? 懒惰模式
主要是 需要加 /s

/s  :默认情况下,  .(点) 不匹配换行,要是加了 /s,. 就可以匹配换行了。即称为 “单行模式”single - line mode