2010-12-03 10 views
1

のは、私はTwitterから次の文字列があるとしましょう:私は<a href="link">link</a>にこのリンクを変更し、この文字列を解析するにはどうすればよい適切なリンクにそれらを変更し、URLを含む文字列を解析する方法

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

を?ここでは、ユーザのタグを解析するコードは次のとおりです。

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) 

答えて

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を探してから、その長さの部分文字列を収集することができます。

+0

guessはこれを世話します – owca

+0

私は、TwitterがあなたのURLの特定の自然停止を保証する文字列を出力することを意味しますか? –

1

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

関連する問題