Python 正则表达式匹配 URL

Posted

技术标签:

【中文标题】Python 正则表达式匹配 URL【英文标题】:Python regex matching URLs 【发布时间】:2021-12-31 18:21:51 【问题描述】:

我在 URL 的文本文件中有一个列表,其中包含一些不需要的文本下面的例子:

文件内容是一个 URL 列表:

http://www.example.com/52                   (Status: 403) [Size: 919]
http://www.example.com/details              (Status: 403) [Size: 919]
http://www.example.com/h                    (Status: 403) [Size: 919]
http://www.example.com/affiliate            (Status: 403) [Size: 919]
http://www.example.com/56                   (Status: 403) [Size: 919]

我使用的正则表达式是:"^[://.a-zA-Z0-9-_]*"

输出如下:

['http://www.example.com/52']
['http://www.example.com/details']
['http://www.example.com/h']
['http://www.example.com/affiliate']
['http://www.example.com/56']

我需要输出如下:

http://www.example.com/52
http://www.example.com/details
http://www.example.com/h
http://www.example.com/affiliate
http://www.example.com/56

本程序使用的代码如下:

import re

with open("test.txt","r") as test:
    for i in test:
        x = re.findall("^[://.a-zA-Z0-9-_]*",i)
        print(x)

【问题讨论】:

也许print(x[0]) 就是你要找的。​​span> 这是工作谢谢你 j1-lee 不使用regex也可以像url = i.split()[0]一样应用 【参考方案1】:

findall 生成一个字符串列表,您可以打印出结果中的第一个元素 print(x[0]) 或只使用 match 代替此用例,因为每行有 1 个 url。

with open("test.txt","r") as test:
    for i in test:
        x = re.match(r"[://.a-zA-Z0-9-_]*", i)
        print(x.group(0))

【讨论】:

以上是关于Python 正则表达式匹配 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式重新字符串匹配提取 URL 链接 - Python

正则表达式匹配URL

python django 配置文件和url参数配置

python正则表达式学习

正则表达式基础

如何用js匹配url的正则表达式