Python 如何从交替正则表达式中选择第一个匹配项?
我试图在URL以“https:…”开头之前提取推文中的所有文本 示例推文: 多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高人们的认识https://... (视频通过@QuickTake) 在本例中,我想删除“https://... (视频通过@QuickTake)“并从开头获取文本但当推文中没有任何URL链接时,它也应该适用。 我尝试过这个表达式,当它与URL一起出现时,得到了两个匹配项:Python 如何从交替正则表达式中选择第一个匹配项?,python,regex,tweepy,tweets,Python,Regex,Tweepy,Tweets,我试图在URL以“https:…”开头之前提取推文中的所有文本 示例推文: 多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高人们的认识https://... (视频通过@QuickTake) 在本例中,我想删除“https://... (视频通过@QuickTake)“并从开头获取文本但当推文中没有任何URL链接时,它也应该适用。 我尝试过这个表达式,当它与URL一起出现时,得到了两个匹配项: /(.*)(?=\shttps.*)|(.*) 我怎样才能使它只检索推文中的文本 提
/(.*)(?=\shttps.*)|(.*)
我怎样才能使它只检索推文中的文本
提前谢谢 这可能过于简单,但简单的
str.find
可能会起到以下作用:
>>s=“多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高认识https://... (视频通过@QuickTake)
>>>s[:s.find('https://')]
“多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高人们的认识”
您基本上只需对tweet进行索引,直到找到https://
的第一个实例为止
请注意,如果https://
未出现在tweet中,仅此方法不起作用。当未找到https://
时,s.find('https://')
将返回-1,这将破坏我们的索引。如果找不到,只需将索引器(link\u index
如下)设置为完整tweet的长度:
>s='这是一条没有URL的tweet'
>>>link_index=s.find('https://'))
>>>如果链接索引==-1:
... 链接索引=len(s)
...
>>>s[:链接索引]
“这是一条没有URL的推文”
您可以删除https
和所有tha,直到字符串结束,使用
tweet = re.sub(r'\s*https.*', '', tweet)
详情:
-0+空格\s*
-字符串https
-字符串(行)的其余部分*
tweet=re.sub(r'\s*https.*','',tweet)
Perfect,这就解决了问题!