[PHP-users 30323] 正規表現での文字クラスの動作

Yukio Kinoshita inahou @ gmail.com
2006年 9月 15日 (金) 07:00:12 JST


木下と申します。

begin と end という文字で囲まれた文字列を
その正規表現を使ってすべて取り出したいのですが、
「beginで始まって、途中にbeginを含まないで、endで終わるもの」
という意味で、
/(begin[^(begin)]*end)/
のようにしているのですが、
[^(begin)] という文字クラスがうまく働いてくれません。
Perlでは、意図したとおりに動作するのですが、
PHPでは、どのようにすればよいのでしょうか。
どなたかわかる方がおられましたら助けてください。

以下がソースになります。
<?php
preg_match_all(
  '/(begin[^(begin)]*end)/',
  'begin aaa end    begin bbb end    begin ccc end',
  $a
);
var_dump($a);
?>



PHP-users メーリングリストの案内