正規表現についての質問です - PHPプロ!Q&A掲示板

974

  • 0P

正規表現についての質問です

質問日時 / 2008年2月19日 17:12    回答数 / 1件

Questioner:  pannna  このエントリーをはてなブックマークに追加 

キーワード / 正規表現   

PHPに限った質問でないので恐縮ですがご容赦頂ければ幸いです。

「{{」と「}}」で囲まれた部分を抜き出す正規表現 "/[\[]{2}.*?[\]]{2}/s" を
使用して切り出しを行っているのですが、「{{~}}」がネストしている文字列に対しては
期待通りの抽出が行えなません。

コードは以下のようになっています。

$sample="{{12345{{abcde}}ABCDE}}";
$exp="/[\[]{2}.*?[\]]{2}/s";
preg_match_all( $exp, $sample, $match );
print_r( $match );

上記コードを実行させると、

{{12345{{abcde}}

が出力されます(当然といえば当然ですが…)。

このとき、

{{12345{{abcde}}ABCDE}}
{{abcde}}

の2つが出力される正規表現はどのようになるのでしょうか?

初歩的な質問で大変申し訳ありませんが、ご教授頂ければ幸いです。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01wintermute恐らく{{abcde}}のような表現が2回以上続いた場合にと

回答一覧

並び替え:

A01
answererwintermute [2月23日 09:37]

恐らく{{abcde}}のような表現が2回以上続いた場合にとりきれないので、2段階に分けて正規表現を使うのがよろしいのではないでしょうか?
(一回だけ、という縛りがあるのなら、/\{\{.*(\{\{.+\}\}).*\}\}/でできると思いますが。)

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)