如何在Python中用正则表达式提取首个特定符号前的完整URL?
解决方案
你可以用re.search()代替re.findall(),直接匹配完整的第一个URL,不需要手动补前缀,也不用处理返回的列表。
对应的正则模式可以写成:r'https://[^\\]+'
代码示例
import re example_text = 'b\'\\x08\\x13"\\\\https://www.example.com/link_1.html\\xd2\\x01`https://www.example.com/link_2.html\'' match = re.search(r'https://[^\\]+', example_text) if match: output = match.group() print(output) # 输出: https://www.example.com/link_1.html
模式解释
https://:匹配URL的固定前缀,确保捕获完整的URL开头[^\\]+:匹配除了反斜杠之外的任意字符,直到遇到第一个反斜杠就停止。刚好对应你场景中第一个URL的结束位置(原字符串里第一个URL后紧跟\\xd2,也就是转义后的反斜杠)
为什么比你之前的写法更好
- 直接捕获完整URL,不用手动拼接
https://前缀 re.search()只返回第一个匹配的结果,不需要从列表里取第一个元素- 逻辑更直观,完全贴合你“匹配以https开头、以反斜杠结尾的URL”的需求
内容的提问来源于stack exchange,提问作者Chi-Yuan Li
相关产品推荐
相关产品推荐

