Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从交替正则表达式中选择第一个匹配项?_Python_Regex_Tweepy_Tweets - Fatal编程技术网

Python 如何从交替正则表达式中选择第一个匹配项?

Python 如何从交替正则表达式中选择第一个匹配项?,python,regex,tweepy,tweets,Python,Regex,Tweepy,Tweets,我试图在URL以“https:…”开头之前提取推文中的所有文本 示例推文: 多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高人们的认识https://... (视频通过@QuickTake) 在本例中,我想删除“https://... (视频通过@QuickTake)“并从开头获取文本但当推文中没有任何URL链接时,它也应该适用。 我尝试过这个表达式,当它与URL一起出现时,得到了两个匹配项: /(.*)(?=\shttps.*)|(.*) 我怎样才能使它只检索推文中的文本 提

我试图在URL以“https:…”开头之前提取推文中的所有文本

示例推文:

多亏了冠状病毒,这种传统发型重新流行起来,肯尼亚人正利用它来提高人们的认识https://... (视频通过@QuickTake)

在本例中,我想删除“https://... (视频通过@QuickTake)“并从开头获取文本但当推文中没有任何URL链接时,它也应该适用。

我尝试过这个表达式,当它与URL一起出现时,得到了两个匹配项:

/(.*)(?=\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)
详情:

  • \s*
    -0+空格
  • https
    -字符串
  • *
    -字符串(行)的其余部分

您可能希望删除http之后的所有内容,
tweet=re.sub(r'\s*https.*','',tweet)
Perfect,这就解决了问题!