Regex 可靠地匹配行内的url
我很难弄清楚我认为什么是非常简单的正则表达式。我正在尝试用Python制作一个推特机器人,它可以推特一些作者的引用。 我需要它:Regex 可靠地匹配行内的url,regex,python-3.x,Regex,Python 3.x,我很难弄清楚我认为什么是非常简单的正则表达式。我正在尝试用Python制作一个推特机器人,它可以推特一些作者的引用。 我需要它: 从文件中读取引用和url 将引号和url分开分析,以便它可以添加引号标记 围绕报价部分,并使用url部分确定哪本书 引用自并添加相关书籍封面 我还需要将url分开来计算发布后的tweet长度 推特缩短了网址 最后一件事:一些引用可能没有url,我需要它来识别它,并添加一些随机图片作为备用 经过反复试验和错误后,我提出了这个正则表达式,在我测试它时,它似乎起到了作用
- 从文件中读取引用和url
- 将引号和url分开分析,以便它可以添加引号标记 围绕报价部分,并使用url部分确定哪本书 引用自并添加相关书籍封面
- 我还需要将url分开来计算发布后的tweet长度 推特缩短了网址
- 最后一件事:一些引用可能没有url,我需要它来识别它,并添加一些随机图片作为备用
r'(?p.*)(?Phttps.*)'
因为我不需要验证url,所以我认为我不需要任何复杂的正则表达式,就像我在研究中遇到的正则表达式一样
但是当我尝试启动bot时,我意识到它无法正确解析引号,而是将整行内容捕捉为“引号”(并且无法识别url)
让我困惑的是,它并没有一直失败,相反,它似乎有时有效,有时无效
下面是我尝试做的一个不可靠失败的例子:
以下是我编写的整个函数:
def parseText(text):
# Separate the quote from the link
tweet = {}
regex = r'(?P<quote>.*)?(?P<link>https.*)?'
m = re.search(regex, text)
tweet = m.groupdict("")
return tweet
def parseText(文本):
#将报价与链接分开
tweet={}
regex=r'(?P.*)(?Phttps.*)'
m=重新搜索(正则表达式,文本)
tweet=m.groupdict(“”)
返回推文
[编辑]好的,我并没有用这种方式解决问题,但找到了一种可能不太优雅但至少似乎能解决问题的解决方法:
- 我有两个独立的函数,一个用于获取url,另一个用于将url从行中拆分出来并单独返回报价
- 我首先调用
,然后只有当它返回的内容不是getUrl()
,我才调用None
。如果getQuote()
,我可以直接推特整行内容url==None
str.split('/n')
删除换行符,它也必须在那里,因为当我添加引号时,最后一个在换行符上
我暂时不讨论这个问题,因为技术上它还没有解决,多亏了那些给我答案的人,但它似乎不起作用。您也可以将正则表达式字符串更改为
r'(?p.*)。(?Phttps.*))“
它还负责引号和链接之间的任何额外字符它匹配整行,因为第一个*
是贪婪的,第二个组是可选的,下面的*
也是可选的。如果您想匹配http部分,可以使用https?\S+
是的,只需将
组中贪婪的量词*
更改为懒惰的*?
,就可以了。您好,谢谢您的建议,不幸的是,它至少在调试器中似乎没有完全消除它。我知道贪婪的量词确实有问题,但仅仅是让它变懒似乎就可以让它一次抓住每一个字符。无论如何,我找到了一个解决方法,请看下文。谢谢,我试图使url在引用之后保持不变,所以无论如何,这不应该是一个问题。