php正则表达式问题????

 <?php
    $pattern = "/<p.*p>|<div[^>]+>/";
    $str = "<div style=\"width:100px\">无语<p>hi</p></div>";
    preg_match_all($pattern,$str,$matches);
    var_dump($matches);
?>

请问为什么结果是:

 array (size=1)
  0 => 
    array (size=2)
      0 => string '<div style="width:100px">' (length=25)
      1 => string '<p>hi</p>' (length=13)

应该先匹配出p标签吗?

用匹配串去扫描str,先读到div的

正则表达式
正则表达式:用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。

在PHP中有两套正则表达式函数库,两者功能相似,只是执行效率略有差异:
一套是由PCRE(Perl Compatible Regular Expression)库提供的。使用“preg_”为前缀命名的函数;
一套由POSIX(Portable Oper......
答案就在这里:PHP正则表达式
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?