0

正規表現で始まるすべての行を照合する必要があります。サンプル入力。

 #X0 alpha numeric content that  I want
 #X1 something else 
 #X26 this one as well

これらの正規表現はどちらも機能しますが、最初の行のみです。#X\d{1,2} のすべての行と照合する必要があります。

     /^(\#X\d{1,2}\s+)(.*?)$/m
     /^(\#X\d{1,2}\s+)(.+)*$/m

上記の正規表現のいずれかで得られるもの。

   $pattern=  "/^(\#X\d{1,2}\s+)(.+)*$/m";
   preg_match($pattern, $content, $match);
   echo $match[1]; 
   alpha numeric content that  I want

望ましい出力。

   alpha numeric content that  I want
   something else 
   this one as well
4

1 に答える 1

2

フラグを指定してpreg_match_allを使用します。PREG_SET_ORDER例えば:

$text = <<<EOT
#X0 alpha numeric content that  I want
#X1 something else
#X26 this one  as well
EOT;

preg_match_all('/^(\#X\d{1,2}\s+)(.*)/m', $text, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    echo $match[0] . "\n";
}

アップデート

編集された質問に対応します。

preg_match_all('/^(\#X\d{1,2}\s+)(.*)/m', $text, $matches, PREG_SET_ORDER);
foreach ($matches as $match) {
    echo $match[2] . "\n";
}
于 2013-08-03T04:39:47.180 に答える