-->
./
<!-- フラ&#65533;ュが見れな&#65533;のためにここに何か書&#65533; --> フラ&#65533;ュがインス&#65533;&#65533;ルされて&#65533;&#65533;たいで&#65533;&#65533;&#65533;

2009年10月22日

[Perl] 正規表現(後方参照、最短マッチ)

こういうのも時間がたつと忘れてしまうのでメモしておきます。$1、$3の部分が後方参照です。[^"]+?が最短マッチです。

処理対象のファイルの内容(一時的に使うファイル名なので一文字にしています。)
FU:[tmptmp]% cat k|perl -p -e 's/^(<a href=")([^"]+)("><img src=")(http:[^"]+)(.*)/$1$2$3$2\?size=800$5/; \ s/(<img src=".+?)show([^"]+?)/$1photo_only$3/;' <a href="http://photozou.jp/photo/show/228411/28096196"><img src="http://photozou.jp/photo/photo_only228411/28096196?size=800" alt="wallpaper03_1024" width="239" height="179" style="border:0" /></a><br /><a href="http://photozou.jp/photo/show/228411/28096196">wallpaper03_1024</a> posted by <a href="http://photozou.jp/user/top/228411">(C)hirono-hideki</a>


 URLの勘違いをしていたので使い物にならないのですが、
<img src="http://art15.photozou.jp/pub/411/228411/photo/28096196.jpg"
の部分を、
<img src="http://photozou.jp/photo/photo_only/228411/28096196?size=800"
に置き換えました。



 シェルから次のように試してみるとわかりやすいかもしれません。
FU:[tmptmp]% echo "aaa bbb ccc"|perl -p -e 's/(aaa) (bbb) (ccc)/fff/'
fff
FU:[tmptmp]% echo "aaa bbb ccc"|perl -p -e 's/((aaa) (bbb)) (ccc)/$1/'
aaa bbb
FU:[tmptmp]% echo "aaa bbb ccc"|perl -p -e 's/((aaa) (bbb)) (ccc)/$2/'
aaa
FU:[tmptmp]% echo "aaa bbb ccc"|perl -p -e 's/((aaa) (bbb)) (ccc)/$4/'
ccc
FU:[tmptmp]% echo "aaa bbb ccc"|perl -p -e 's/((aaa) (bbb)) (ccc)/$3/'
bbb
FU:[tmptmp]% 

Powered by ScribeFire.



posted by hirono at 01:39| Comment(0) | TrackBack(0) | プログラミング
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33105104

この記事へのトラックバック