用于从Twitter推文中删除URL链接的表达式

时间:2014-06-25 03:45:06

标签: python regex string

我只是想在字符串中找到并替换所有出现的twitter url(推文):

输入:

  

这是一条带有网址的推文:http://t.co/0DlGChTBIx

输出:

  

这是一条带有网址的推文:

我试过这个:

p=re.compile(r'\<http.+?\>', re.DOTALL)
tweet_clean = re.sub(p, '', tweet)

8 个答案:

答案 0 :(得分:41)

这样做:

result = re.sub(r"http\S+", "", subject)
  • http匹配文字字符
  • \S+匹配所有非空白字符(网址末尾)
  • 我们用空字符串替换

答案 1 :(得分:2)

以下正则表达式将捕获两个匹配的组:第一个包含推文中的所有内容,直到URL,第二个将捕获URL后面的所有内容(在上面发布的示例中为空):

import re
str = 'This is a tweet with a url: http://t.co/0DlGChTBIx'
clean_tweet = re.match('(.*?)http.*?\s?(.*?)', str)
if clean_tweet: 
    print clean_tweet.group(1)
    print clean_tweet.group(2) # will print everything after the URL 

答案 2 :(得分:0)

您可以尝试使用以下re.sub函数从字符串中删除URL链接

>>> str = 'This is a tweet with a url: http://t.co/0DlGChTBIx'
>>> m = re.sub(r':.*$', ":", str)
>>> m
'This is a tweet with a url:'

它会在第一个:符号后删除所有内容,替换字符串中的:会在最后添加:

这将打印出:符号

之前的所有字符
>>> m = re.search(r'^.*?:', str).group()
>>> m
'This is a tweet with a url:'

答案 3 :(得分:0)

尝试使用:

text = re.sub(r"http\S+", "", text)

答案 4 :(得分:0)

clean_tweet = re.match('(。*?)http(。*?)\ s(。*)',内容)

    while(clean_tweet):
        内容= clean_tweet.group(1)+“” + clean_tweet.group(3)
        clean_tweet = re.match('(。*?)http(。*?)\ s(。*)',内容)

答案 5 :(得分:0)

text = re.sub(r"https:(\/\/t\.co\/([A-Za-z0-9]|[A-Za-z]){10})", "", text)

t.co/之后,它也与字母数字匹配

答案 6 :(得分:0)

您可以使用:

text = 'Amazing save #FACup #zeebox https://stackoverflow.com/tiUya56M Ok'
text = re.sub(r'https?:\/\/\S*', '', text, flags=re.MULTILINE)

# output: 'Amazing save #FACup #zeebox  Ok'
  • r解决方案是将Python的原始字符串表示法用于正则表达式模式;反斜杠在以'r'开头的字符串文字中不会以任何特殊方式处理
  • ?使结果RE匹配先前RE的0或1个重复。 https?将匹配“ http”或“ https”。
  • https?:\/\/将匹配字符串中的任何“ http://”和“ https://”
  • \S返回匹配项,其中字符串不包含空格字符
  • *出现零次或多次

答案 7 :(得分:0)

我找到了这个解决方案:

text = re.sub(r'https?://\S+|www\.\S+', '', text)