人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: watal
●カテゴリ:コンピュータ
✍キーワード:2次元 Perl PHP はと サブルーチン
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● こんどう
●100ポイント

http://search.net-newbie.com/php/function.preg-match-all.html

ちゃんと試してないですが、こんな感じでしょうか。(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++;

}

}

◎質問者からの返答

わぁ。動きました。

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ