字符串: <a href="teamMemberDisplay.php?tid=650" title='Team' >SW Design and ISS Scrum Team 2</a><br><a href="programDisplay.php?pid=17" title='Program/Domain/BU'>LR RF & HW Modules</a>-&gt;<a href="tdlDisplay.php?pid=119" title='Technical Domain'>LR WCDMA CPRI Baseline</a>-&gt;<a href="projectDisplay.php?pid=123" title='Project'>LR CPRI Misc.</a>-&gt;<a href="teamMemberDisplay.php?tid=576" title='Team' >SW Dev and Test</a>
求将 LR RF & HW Modules,LR WCDMA CPRI Baseline, LR CPRI Misc. ,SW Dev and Test 这四个取出来的正则,以及只取出LR RF & HW Modules的正则表达式。
我在php里用的函数是preg_match.
谢谢了!!

解决方案 »

  1.   


    $str=<<<html
    <a href="teamMemberDisplay.php?tid=650" title='Team' >SW Design and ISS Scrum Team 2</a><br> 
    <a href="programDisplay.php?pid=17" title='Program/Domain/BU'>LR RF & HW Modules</a>-&gt;<a href="tdlDisplay.php?pid=119" title='Technical Domain'>LR WCDMA CPRI Baseline</a>-&gt;<a href="projectDisplay.php?pid=123" title='Project'>LR CPRI Misc.</a>-&gt;<a href="teamMemberDisplay.php?tid=576" title='Team' >SW Dev and Test</a> 
    html;
    //echo $str;quit();
    preg_match_all('/(?:\s+|-&gt;)<a[^>]*>(.*)<\/a>/isU',$str,$arr);
    print_r($arr[1]);只取第一个用preg_match()即可。
      

  2.   

    $text=array();
    $html="<a href=\"teamMemberDisplay.php?tid=650\" title='Team' >SW Design and ISS Scrum Team 2</a><br>
    <a href=\"programDisplay.php?pid=17\" title='Program/Domain/BU'>LR RF & HW Modules</a>
    <a href=\"tdlDisplay.php?pid=119\" title='Technical Domain'>LR WCDMA CPRI Baseline</a>
    <a href=\"projectDisplay.php?pid=123\" title='Project'>LR CPRI Misc.</a>
    <a href=\"teamMemberDisplay.php?tid=576\" title='Team' >SW Dev and Test</a>";
    preg_match_all('|Program\/Domain\/BU\'>(.+)<\/a>|',$html, $matches);
    $text[0]=$matches[1][0];
    preg_match_all('|Technical Domain\'>(.+)<\/a>|',$html, $matches);
    $text[1]=$matches[1][0];
    preg_match_all('|Project\'>(.+)<\/a>|',$html, $matches);
    $text[2]=$matches[1][0];
    preg_match_all('|title=\'Team\' >(.+)<\/a>|',$html, $matches);
    $text[3]=$matches[1][1];
    print_r($text);
      

  3.   

    谢谢2楼的看来我实现的太麻烦了。我目前只实现到这里preg_match("/[.\n]*(?:Program\/Domain\/BU'>)(.+)(?!<\/a>-&gt;<a href)$/",$af,$matches);var_dump($matches[1]);
    输出结果是LR RF & HW Modules</a>-&gt;<a href="tdlDisplay.php?pid=119" title='Technical Domain'>LR WCDMA CPRI Baseline</a>-&gt;<a href="projectDisplay.php?pid=123" title='Project'>LR CPRI Misc.</a>-&gt;<a href="teamMemberDisplay.php?tid=576" title='Team' >SW Dev and Test</a>
    虽然这样再用php处理下也能得到结果,但是我还是希望用正则直接实现。
      

  4.   

    2楼能不能帮我解释下 
    (?:\s+|-&gt;)这是上面意思啊。
    谢谢了!
      

  5.   

    (?:Expression) 非捕获组 进行子表达式Expression的匹配,并将匹配内容保存到最终的整个表达式的区配结果中,但Expression匹配的内容不单独保存到一个组内  | 或的意思