regex 用于清理http/https的正则表达式代码出现问题

jbose2ul  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(121)

我试过许多代码来删除推文中的链接,但似乎都不起作用。
原始链接示例:网址:t.co/WfWWOukD9l/
之后的显示方式:上一页
整个功能:

def cleantext(text):
    text = re.sub(r'@[A-Za-z0-9]+', '', text) 
    text = re.sub(r'[^0-9A-Za-z \t]+', '', text)
    text = re.sub(r'#', '', text)
    text = re.sub(r'RT[\s]+', '', text)
    text = re.sub(r'https?://\S+', '', text)
    text = re.sub(r'(<a href[\s\S]*?>[\s\S]*?)|(\b(http|https):\/\/.*[^ alt]\b)', '', text)
    text = re.sub(r'http[s]?:\/\/\S+', '', text)
    text = text.lower() 

    return text

除了链接,文本中的其他内容都被清除了。使用Python 3.10.9 Regex 2022.10.31
我使用的代码:

text = re.sub(r'https?://\S+', '', text)
    text = re.sub(r'(<a href[\s\S]*?>[\s\S]*?)|(\b(http|https):\/\/.*[^ alt]\b)', '', text)
    text = re.sub(r'http[s]?:\/\/\S+', '', text)
cwxwcias

cwxwcias1#

问题是你在替换链接之前替换了各种特殊字符。当你到达链接替换时,你的字符串不包含:/,所以http[s]?:\/\/\S+不能匹配。把它移到函数的开头,这样链接在你尝试匹配之前是完整的。
此外,根据您的需要(由于示例不好,我看不到),\S+可能匹配或不匹配的内容超过您的需要,如果是这样,您必须将其更改为更具限制性的内容,如[^\s()]+
最后,需要注意的是,[s]?等效于s?-这里的括号是不必要的。

5cg8jx4n

5cg8jx4n2#

当你每次只想删除相同的Chars时,那么就只删除第x个Chars。

相关问题