あなたがやりたいと思うことに基づいて、ここにあなたが変更する必要があるものがあります。一致する最初のタグを実際に閉じるかどうかに関係なく、式<picture>
は最初のタグまでのすべてのタグと一致します。</picture>
<picture>
タグをネストすることは違法であると仮定すると<picture></picture>
、置換の置換セクションに追加するだけで済みます。次に例を示します。
$content =~ s/<picture[^>]*>(.*?)<\/picture>/<picture><\/picture>/gis;
ヒント: スラッシュを含む式を扱う場合は、スラッシュをエスケープする必要がないように、次のようにします。
$content =~ s@<picture[^>]*>(.*?)</picture>@<picture></picture>@gis;
これはまだ完璧ではありません!たとえば、次のようになります。
<picture stuff="adfgerth"><picture stuff="235wefw45"><somejunk /></picture></picture>
次のものに置き換えられます。
<picture></picture></picture>
しかし今では、正規表現だけでは不十分であり、おそらく XML パーサーが必要になるところまで来ています。