我有一个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
字符串[^",]+
-"
和,
以外的一个或多个字符。