PHPのpreg_match_all()関数はとっても便利なんですが、それをPerlに移植したいと思っています。正規表現にマッチする文字列を2次元の配列に格納して、しかもその個数を返してくれるようなPerlのサブルーチン、どっかにありませんか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2003/03/29 04:07:55
  • 終了:--

回答(1件)

id:jkondo No.1

こんどう回答回数104ベストアンサー獲得回数42003/03/29 09:28:26

ポイント100pt

ちゃんと試してないですが、こんな感じでしょうか。(orderには対応していません。)

my $str = ”<b>example: </b><div align=left>this a test</div>”;

my $array = [];

&preg_match_all(’(<[^>]+>(.*?)<¥/[^>]+>)’,$str,$array);

print $array->[0]->[0];

print $array->[0]->[1];

print $array->[1]->[0];

print $array->[1]->[1];

sub preg_match_all {

my ($pattern,$string,$array) = @_;

my $i;

for ($string =~ /$pattern/g) {

$array->[int($i/2)]->[$i%2] = $_;

$i++;

}

}

id:watal

わぁ。動きました。

arrayに格納するときに()でマッチする個数を予め$i/2、$i/2のように指定しなきゃいけないのが残念ですが、return $i/2のようにすれば個数も返り値として返るし、とりあえず満足です。

ありがとうございました。for文で=~を括れば残りの部分にマッチするとは知りませんでした。まだまだ精進が必要なようです…

P.S.jkondoさん、4月1日にご挨拶させてください!

2003/03/29 13:47:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません