不能创建正确的正则表达式



我有一个html文本。用我的正则表达式:

r'(http[S]?://[S]+/favicon.ico[S^,]+)"'

re.findall(),我得到这个结果:

['https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196', 'https://stackoverflow.com/favicon.ico,https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196']

但是我不想在列表中看到第二个结果,我知道它里面有昏迷,但我不知道如何从我的正则表达式中排除昏迷。我使用re.findall()是为了在html文本的任何地方找到必要的链接,因为我不知道它可能在哪里。

注意[S]+包含冗余字符类,与S+相同。在http[S]?://中,[S]?很可能是人为错误,因为[S]?匹配任何可选的非空白字符。我怀疑你暗示要匹配http§://协议。使用s来匹配s,或者使用S来匹配S

可以使用

https?://[^s",]*/favicon.ico[^",]+

参见regex演示。

细节:

  • https?://-http://https://
  • [^s",]*- 0个或多个字符,除了空白,",字符
  • /favicon.ico-固定/favicon.ico字符串
  • [^",]+-",以外的一个或多个字符。

最新更新