GAE-Pythonで正規表現文字列置換

2010/11/16 6:57 に いつかはちょうになる が投稿
str.replace(**,**)くらいでできるだろうと思いきや、意外と面倒で驚いた正規表現での文字列置換。今回対象となったのは、URLの正当性を判断する部分だった。単にマッチするだけでもよいのだが、どこで処理が止まったかを把握したいため、条件にマッチする部分をブランクに変換して状態を調べる方法をとった。

正規表現に絡むライブラリを利用するにはreをインポートする必要があった。これがわからず当分の間迷走していたとは口が裂けても言えない。
import re

次の一文はsrcで指定されている文字列がURLであるかどうかを判断している。"http://****"といったURL形式にマッチする部分をブランクに置き換え、残った文字列がある場合はURLではないという判断になる。尚、この正規表現で処理しようとした場合、意味不明な日本語のドメインはURLではないと判断される。また、シングルクォートが含まれてもURLではないと判断する。
if re.sub('^(https?|ftp)(:\/\/[-_.!~*()a-zA-Z0-9;\/?:\@&=+\$\,%#]+)$', '', src)!='':



Comments