1

Twitterから次の文字列があるとしましょう:

"This is my sample test blah blah http://t.co/pE6JSwG, hello all"

このリンクをに変更して、この文字列を解析するにはどうすればよい<a href="link">link</a>ですか?ユーザータグを解析するコードは次のとおりです。

    tweet = s.text;
    user_regex = re.compile(r'@[0-9a-zA-Z+_]*',re.IGNORECASE)

    for tt in user_regex.finditer(tweet):
        url_tweet = tt.group(0).replace('@','')
        tweet = tweet.replace(tt.group(0),
            '<a href="http://twitter.com/'+
            url_tweet+'" title="'+
            tt.group(0)+'">'+
            tt.group(0)+'</a>')

そして、URLの現在の正規表現:

    http_regex = re.compile(r'[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]*', re.IGNORECASE)
4

2 に答える 2

1

おそらく、 django-oembedプロジェクトのソースコードからインスピレーションを得ることができます。

于 2010-12-03T15:28:33.513 に答える
1
>>> test = "This is my sample test blah blah http://t.co/pE6JSwG, hello all"

>>> re.sub('http://[^ ,]*', lambda t: "<a href='%s'>%s</a>" % (t.group(0), t.group(0)), test)

>>> This is my sample test blah blah <a href='http://t.co/pE6JSwG'>http://t.co/pE6JSwG</a>, hello all

これは、コンマやスペースなどの文字をURLの有効な停止点と見なす場合にのみ機能します。

一般に、URLの一致に正規表現を使用するべきではありません。これは、URLがいつ終了するかを知る良い方法がない場合があるためです。毎回同じ形式の文字列があることが保証されている場合は、このソリューションが機能します。また、常に同じ長さのURLを取得する場合もあります。その場合、httpを検索し、後でその長さのサブストリングを収集できます。

于 2010-12-03T15:32:24.787 に答える