[PHP-users 27362] Re: 日本語が含まれている文字列への正規表現について

KISE Hiroshi kise @ fuyuneko.jp
2005年 11月 3日 (木) 20:05:44 JST


From: 水沼寛喜 <mizunuma @ m-design.com>
Subject: [PHP-users 27359] Re: 日本語が含まれている文字列への正規表現について
Date: Thu, 3 Nov 2005 19:07:16 +0900
> やりたいことは、「”<<<”と”>>>”」がくくられた文字列(日本語含む)を、
> 「”<b>”と”</b>”のくくりに変換するということですが、単純に
> 「”<<<”」を「”<b>”」に置換するのではなく、「”<<<”と”>>>”」の
> 両方でくくられていた場合にのみ、置換処理を行いたいということです。

「<<<あいうえお<<<かきくけこ>>>さしすせそ>>>」
とか
「<<<あいうえお<<<かきくけこ>>>」
はどうなるべきですか? もう1つ、
「<<<<<あいうえお>>>>>」
は?

Cのコメント「/*」〜「*/」を削除する、という話に似てますね。
そういうものだとして、これは通常の正規表現の範囲ではめんどうです。

Perlの拡張された正規表現で、最小マッチを使えば、

$str = "<<<あいうえお>>>";
echo preg_replace("/<<<(.*?)>>>/", "<b>$1<b>", $str), "\n";

とか書けますが、囲まれた中の文字は考慮していません。
漢字コードがSJISで、囲む文字によっては間違えるかもしれません。
-- 
喜瀬“冬猫”浩


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