正規表現で、タグで囲まれた文字列はマッチしたくない

[上に] [前に] [次に]
M1 1999/08/03(火) 21:15:04
 Perlを使って、ファイルの中の
http://www.hoge.com/
 を
<a href="http://www.hoge.com/">http://www.hoge.com/</a>
 にする、つまり、ハイパーリンクできるようにするスクリプトを作りたいと思っています。

while(<FILE>){
s/(http:\/\/\S*)/<a href="$1">$1<\/a>/ig;
}

 とすれば良さそうですが、
<a href="http://www.hoge.com/">http://www.hoge.com/</a>
のような文字列が、
<a href="<a href="http://www.hoge.com/">http://www.hoge.com/</a>"><a href="http://www.hoge.com/">http://www.hoge.com/</a></a>
と2重にタグで囲まれてしまいます。

 これを回避して、タグで囲まれていない場合にのみ、<a>で囲むようにしたいのですが、どうしたらよいでしょうか?

ふじ 1999/08/03(火) 21:23:09
http://www.din.or.jp/~ohzaki/perl.htm#AutoLink
こんなのがあります。

ST 1999/08/03(火) 21:24:11
このラウンジのスクリプトを参照してみてはいかがですか。
http://www.tohoho-web.com/wwwlng.htm

ちなみに
s/(http:\/\/[a-zA-Z0-9\.\/\-+#_?~&%=^\@:;]+)/<A HREF="$1">$1<\/A>/g;
こんなふうにやっていますが。

ST 1999/08/03(火) 21:25:56
すいません。質問をきちんと読んでいませんでした。上の発言はなかったことに……m(_)m

[上に] [前に] [次に]