不規則なパターンマッチで置換するには?
[上に]
[前に]
[次に]
Shinji
1999/06/16(水) 17:58:42
初めまして。ぜひともみなさまのお知恵を拝借したく、投稿させてもらいました。
perlでの以下の様なパターンの置換はどのように行えばよろしいのでしょうか?
<img src="normal.gif">
<a href="big.gif"><img src="small.gif">
</a> と複数行あった場合(さらに続く場合もあり)に、
<a href="normal.gif">normal.gif</a>
<a href="big.gif">big.gif</a>
:
という結果が欲しいのです。なにかよい方法はないでしょうか。
よろしくお願いいたします。
aki
1999/06/18(金) 12:35:35
(さらに続く場合もあり)というのがどのように続くのかちょっと
わかりませんが、
s/^<img src="(.*)">$/<a href="$1">$1<\/a>/gi ;
s/^<a href="(.*)"><img src="(.*)">$/<a href="$1">$1<\/a>/gi ;
s/^<\/a>$//gi ;
じゃダメなんでしょうか?
もっと複雑な置換しようとしてるのだったらゴメンナサイ。
#全然不規則じゃないし(^^;
Shinji
1999/06/18(金) 17:38:00
akiさん、早速のお返事ありがとうございます。
しかし、正常に置換してくれません。(というかまったく置換されません)
補足:(さらにつづく場合、不規則)
<img src="xx1"><img src="xx2"><a href="big"> (FORM内で改行される)
<img src="small"> (同)
</a><img src="nazo">
と、予想が付かない場合です。
説明を省いてしまって申し訳なかったのですが、
掲示板のCGIをPerlで作成してまして、FORMからの入力(タグフル許可)
の情報を、オプションでアンカーに置き換えるというものです。
普通は、1行程度なのですが、中には入り乱れて入力されるものが
あって、正常に置換できなくて困っています。いろいろ考えるうち頭が
パニックになってる状態です^^;
また、質問の仕方などが不適切ならご指摘下さい。
B-Cus
1999/06/19(土) 00:56:41
s|<img src="(.*?)">|<a href="$1">$1</a>|gi ;
s|<a href="(.*?)">\n*<img src="(.*?)">\n*</a>|<a href="$1">$1</a>|gi ;
じゃダメ?
Shinji
1999/06/23(水) 16:09:10
[[解決]]
B-Cusさん、ありがとうございます。
お返事が遅れましたが、
行を逆転させましたが...無事置換で出来ました。
そもそも、すぐ解決出来なかったのは、\nを判断してたつもりが、
これ以前に、
s/\r\n/\r/g;
s/\n/\r/g;
があったからだめだったんですね^^;勉強不足でした。
どうも、みなさんありがとうございました。
[上に]
[前に]
[次に]