8  IDD2P               : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP 
                         : PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
XBIN=    12   , IDD6 measurement
  9  IDD6                : **P***** ** ***** ******P* **P***** ******** ******** ******** **P*****
                         : ******** ******** ******** ******** ******** ******** ******** ********    
IDD6-DCLOP =      3   
 10  IDD0                : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP象这个,如果我要取该字段其中的 "8 IDD2P   9 IDD6   10 IDDO" ,请问正则怎么写?

解决方案 »

  1.   

    <?php
    $string = <<<str
      8  IDD2P               : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP 
                             : PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    XBIN=    12   , IDD6 measurement
      9  IDD6                : **P***** ** ***** ******P* **P***** ******** ******** ******** **P*****
                             : ******** ******** ******** ******** ******** ******** ******** ********    
    IDD6-DCLOP =      3   
     10  IDD0                : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    str;
    $pattern = '/((\d+)[\t| ]*([A-Za-z0-9]+))[\t| ]*:.*/m';
    preg_match_all($pattern, $string, $match);
    print_r($match[1]);
    ?>
      

  2.   


    $s1 = '8  IDD2P               : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP 
                             : PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    XBIN=    12   , IDD6 measurement';
    $s2 = '9  IDD6                : **P***** ** ***** ******P* **P***** ******** ******** ******** **P*****
                             : ******** ******** ******** ******** ******** ******** ******** ********    
    IDD6-DCLOP =      3';
    $s3 = '10  IDD0                : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP';
    preg_match('/(.+):.+/', $s1, $arr1);
    preg_match('/(.+):.+/', $s2, $arr2);
    preg_match('/(.+):.+/', $s3, $arr3);echo '<pre>';
    print_r($arr1[1]);
    echo '<br>';
    print_r($arr2[1]);
    echo '<br>';
    print_r($arr3[1]);
      

  3.   

    这个可能有用 /\d+\s{2}ID\w+/
      

  4.   


    $string = <<<str
      8  IDD2P               : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP 
                             : PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    XBIN=    12   , IDD6 measurement
      9  IDD6                : **P***** ** ***** ******P* **P***** ******** ******** ******** **P*****
                             : ******** ******** ******** ******** ******** ******** ******** ********    
    IDD6-DCLOP =      3   
     10  IDD0                : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    str;
    $pattern = '/(\d+.+):.+/';
    preg_match_all($pattern, $string, $match);print_r($match[1]);
      

  5.   

    $s = <<< TEXT
      8  IDD2P               : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP 
                             : PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    XBIN=    12   , IDD6 measurement
      9  IDD6                : **P***** ** ***** ******P* **P***** ******** ******** ******** **P*****
                             : ******** ******** ******** ******** ******** ******** ******** ********    
    IDD6-DCLOP =      3   
     10  IDD0                : PPPPPPPP PP PPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP PPPPPPPP
    TEXT;preg_match_all('/^\s*\d+\s+\w+/m', $s, $r);
    print_r($r[0]);
    Array ( [0] => 8 IDD2P [1] => 9 IDD6 [2] => 10 IDD0 )