http://www.aaa/aaa.htm
を
<a href=”http://www.aaa/aaa.htm”>http://www.aaa/aaa.htm</a>
へ自動的に変換
WZ Editor でしか試してないのですが、
こんな感じで変換することが可能です。
<検索対象>
<検索>
(http://[a-z.]+/[a-z.]+)
<置換>
<A HREF=”$1”>$1</A>
<説明>
() … 括弧で区切られた部分を記憶する。
http:// … ”http://” にマッチ。
[a-z.]+ … a〜z と ”.” の繰り返し(”+”が繰り返しを表す)にマッチ。
/ … ”/” にマッチ。
$1 … 括弧指定で記憶した情報を参照する。$1 だと 1番目。$2 だと2番目の情報を参照する。
参考URL先に鬼のような正規表現と解説が載ってますが、ぶっちゃけ99.99%とかの正確さでよいなら、
s?https?://[-_.!~*’()a-zA-Z0-9;/?:@&=+$,%#]+
ぐらいでマッチするみたいですね。
これだとhttp://www.aaa/images/logo.gif
などで終わるものもヒットしてしまうようで、htmだけで終わるものをヒットというのはどうすればいいでしょう。
上記サイトにRFCに沿ったHTTPのURLをマッチさせる正規表現などがあります。
ただわたしの記憶通りだと、
(
) とか、)までマッチしてしまったと思っているので、一般向けじゃないです。
一般配布してるCGIから抜き出した方が楽かも。
一応わたしの使ってるCGIの公開サイトもはっておきますね。
CJ-Club [www.cj-c.com]
リンク先みてみたのですが、チンプンカンプンでした。 自分にはハードル高そうですね、簡単なのがあるかと思ったのですが、
vimの置換で確認しました。
:%s/http:¥/¥/..*¥/.*[ ]*$*/<a href=”&”>&<¥/a>/
[]内は、半角空白、全角空白にしています。
http://で始まり[半角空白、全角空白、改行]までを
置換対象にしています。
普通の正規表現なので、他のツールでも
http:¥/¥/..*¥/.*[ ]*$*
で検索できると思います。
置換前
gogo
gogo
gogo
gogo
置換後
gogo<a href=”
”>
</a>
gogo<a href=”
”>
</a>
gogo<a href=”
”>
gogo<a href=”
”>
Vim 6.3 for WindowsをインストールしてGVIMで試してみたのですが、:%s/http:¥/¥/..*¥/.*[ ]*$*/&<¥/a>/ を貼り付けても検索とかできないです。
%s/http:¥/¥/..*¥/.*¥.html*/<a href=”&”>&<¥/a>/
http://ではじまり、htmlかhtmで終わるパターンを検索し置換するバージョンです。
置換前
hogehoge
hogehoge
置換後
hogehoge<a href=”
”>
hogehoge<a href=”
”>
こちらもですが、検索する文字列の欄に%s/http:¥/¥/..*¥/.*¥.html*/&<¥/a>/を貼り付ければ自動的に置き換えもしてくれるということなのでしょうか?
じゃあPerl雑伎ほど精密なものはわからないので、
CJ-ClubさんのCGIから抜き出してみましょうか
s/([^=^¥”]|^)((http|ftp|https)¥:[¥w¥.¥~¥-¥/¥?¥&¥+¥=¥:¥@¥%¥;¥#¥,¥|]+)/$1<a href=$2 target=$TGT>$2<¥/a>/g;
となっています(テキストをftpで検索すれば二回目あたりで見つかるはず)
これなら単純なので、すぐわかると思います。
HTMLのみを抜き出すのならば、
s/([^=^¥”]|^)((http|ftp|https)¥:[¥w¥.¥~¥-¥/¥?¥&¥+¥=¥:¥@¥%¥;¥#¥,¥|]+¥.html?)/$1<a href=$2>$2<¥/a>/g;
と、マッチ部に¥.html?を付け足せばいいです。(htmとhtmlにマッチ)
おそらく他の人の投稿のものにも、応用次第で付け足せると思います。
テキストをftpで検索すれば というのがよく分からないのですが、秀丸などでの検索・置換え機能を使わずにやるわけでしょうか?
http://www.hondarer-soft.com/cx/pukiwiki/pukiwiki.php?Software%2...
[hondarer-soft] to [cx20.main.jp]
URL は自分の Webサイト にある WZ Editor と正規表現 に関する情報(リンク集など)です。
正規表現は環境(エディタの種類、プログラミング言語)によって
かなり「なまり(方言)」があるので、一概に「これ」というものを示すことができません。
逆に、エディタやプログラミング言語を指定して戴ければ、
的の得た回答が得られやすいのでは?と思います。
(2回までしか回答できないので、これ以上答えられないのですが・・・)
参考までに、1回目の正規表現を少し修正しました(htm/htmlと複数階層の対応)
また、はてなに投稿するときに、
一部記号(「”」や「¥」など)が全角になってしまいます。
お手数ですが、使用される場合は、これらを半角に読み替えて入力してみてください。
<検索>
(http://[a-z.-]+/[a-z./-_¥~]*.html?)
<置換>
<A HREF=”$1”>$1</A>
<変換前>
gogo
gogo
gogo
gogo
hogehoge
hogehoge
<変換後>
<a href=”
”>
<a href=”
”>
<a href=”
”>
gogo<a href=”
”>
gogo<a href=”
”>
gogo<a href=”
”>
gogo<a href=”
”>
hogehoge<a href=”
”>
hogehoge<a href=”
”>
ちなみに、Vim や Perl の場合は、
Vim … :%s/ 検索する内容 / 置換する内容 /
Perl … s/ 検索する内容 / 置換する内容 /g;
のように入力するようですね(使ったことはないですが(^^A)
どうも何度もありがとうございます。
(「”」や「¥」など)が全角になってしまうなど知りませんでした。 動かないはずですよね、今回の検索はうまくできそうなんですが、置換えるとそのまま$1になってしまうんですよね???
秀丸を使っています。
こちらの聞き方が足りなかったようですが、これだと、/ が2つ以上ある場合や-(ハイフン)をフォルダ名に使っていたりするとその前までしか該当しないようです。
/ や - が複数あっても、最後の.htm まで範囲指定できるものが欲しいのです。