- ベストアンサー
あるタグに囲まれた文字以外を対象に置換
"あるタグ"というのはコメントアウトのことです。 以下のような変数があります。 $string = <<<EOF テスト1行目 <!--START--> テスト2行目 テスト3行目 <!--END--> テスト4行目 <!--START--> テスト5行目 テスト6行目 <!--END--> EOF; このうち<!--START-->から<!--END-->に囲まれている以外の「テスト」を全て「test」に置き換えたく思います。 これを正規表現を使い実現できるでしょうか? またコメントアウトの内外にかかわらず、$stringの中には様々なタグや改行が含まれます。 説明が下手で申し訳ないですが、ご教示いただけると大変助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
横から失礼します。 フラグを設定します。 $flag=1; 1行ずつ処理をするループの中で、 <!--START-->が見つかれば $flag=0; <!--END-->が見つかれば $flag=1; $flag==1なら 「テスト」を「test」に置き換え でいかがでしょうか。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
回答No.1
一個の正規表現で片付けるとか無茶なことは考えないで、 置換対象にしたいところだけ切り出す手順と、 実際に置換を行う手順を組み合わせたらどうでしょう?
質問者
お礼
ご回答ありがとうございます。 ご説明頂いた通り、処理を分けて行おうと思います。 その場合ですがよろしければ、どういった関数を使えばいい、もしくは大まかな流れなど簡単に教えて頂けないでしょうか。 善意に甘えるような形で申し訳ないですが、よろしければお願いいたします。
お礼
ご回答ありがとうございます。 ループして一行ずつ評価する方法ははじめ私も思い付きました。 しかし行数も多く、頻繁に実行される処理なので、正規表現で一気に置換出来ればと思い質問させて頂きました。後出し情報で申し訳ないです。 それか、そもそも負荷について考えが過敏すぎるのでしょうか…。 他に実現方法がなければ、ループ処理でやろうと思います。ご回答ありがとうございました。