在正则表达式中,匹配是很灵活的,今天介绍一种在正则匹配中排除字符串的方法,举例如下:
假如现在有一个这样的字符串 “<html><body><div>aaa</div><div>bbb</div><div>ccc</div></body></html>”
现在想提取最后一个<div>中的内容,该如何写呢 ?
如果这么写 /<div>(.*)<//div>/,会把匹配aaa</div><div>bbb</div><div>ccc,显然,这个不是我们想要的,分析一下匹配的字符串我们就会发现,我们要匹配的字符串的两端是<div>和</div>,但是中间不含有<div>,那么要写一个符合上述要求的正则表达式该如何写呢?
下面是符合这个要求的写法[perl语言]:
my $str = "<html><body><div>aaa</div><div>bbb</div><div>ccc</div></body></html>";
if($str =~ /<div>((.(?!<div>))*)</div><//body>/)
{
print "$1 /r/n";
}
else
{
print "not match/r/n";
}
这样,程序输出的是ccc