鱼C论坛

 找回密码
 立即注册
查看: 97|回复: 6

[已解决]正则表达式问题

[复制链接]
发表于 2024-12-7 21:38:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import re

html = <img class="BDE_Image" src="http://tiebapic.baidu.com/forum/w%3D580/sign=1f79ed048efcc3ceb4c0c93ba245d6b7/11f50ad7912397ddf92df9221f82b2b7d1a28789.jpg?tbpicau=2024-12-18-05_e1ba641e80e45b8d136b1e354b3de87e" size="526480" changedsize="true" width="560" height="995" size="526480">
p = r'<img class="BDE_Image" src="[^"]+\.jpg.*?" .*?>'
imglist = re.findall(p,html)

for each in imglist:
        print(each)

程序输出成功识别到了html网址:
<img class="BDE_Image" src="http://tiebapic.baidu.com/forum/w%3D580/sign=1f79ed048efcc3ceb4c0c93ba245d6b7/11f50ad7912397ddf92df9221f82b2b7d1a28789.jpg?tbpicau=2024-12-18-05_e1ba641e80e45b8d136b1e354b3de87e" size="526480" changedsize="true" width="560" height="995" size="526480">

可否详细解释下正则表达式p = r'<img class="BDE_Image" src="[^"]+\.jpg.*?" .*?>' 规则, 是如何匹配到网址html的?

最佳答案
2024-12-7 21:42:19
鬼少 发表于 2024-12-07 21:42
可否解释下正则表达式 p = r'


通过 `p = r''` 这样定义一个正则表达式,我们使用了 Python 的原始字符串(raw string)表示法。以下是其具体含义:

1. **r'' 前缀**:  
   - 在字符串前添加一个 `r`,表示这个字符串是一个"原始字符串"。这样会使得反斜杠 `\` 被视为普通字符,而不是转义字符。
   - 例如,普通字符串 `"\\n"` 会被解释为一个换行符,而原始字符串 `r"\\n"` 会被解释为两个字符:反斜杠和字母n。

2. **正则表达式中的应用**:  
   - 在正则表达式中,会频繁使用反斜杠作为转义字符,因此使用原始字符串可以避免在正则表达式中进行过多的转义。
   - 例如,普通字符串里要写 `\d` 需要用 `"\\d"`,而用原始字符串则只需写 `r'\d'`。

在上述代码中,`p = r''` 是在定义正则表达式模式 `p` 时确保反斜杠能够正常在正则表达式中工作而非作为转义字符。这是 Python 中定义正则表达式时的一个常用习惯。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-7 21:38:41 | 显示全部楼层
要在Python中使用正则表达式从HTML文本中匹配网址,你可以使用`re`模块。假设你的HTML存储在一个字符串变量中,你可以使用正则表达式来匹配URL。下面是一个简单的例子:
import re

html = '''这里是你的HTML内容'''
p = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'

urls = re.findall(p, html)
print(urls)

解释:
- `https?://`: 匹配`http://`或`https://`。
- `(?:...)`: 非捕获分组,仅用于匹配不捕获。
- `[-\w.]`: 匹配URL中的合法字符,包括字母、数字、下划线和点。
- `(?:%[\da-fA-F]{2})`: 匹配URL编码字符,如`%20`。
- `+`: 匹配前面表达式一次或多次。

这样使用`re.findall`函数,你就可以从HTML内容中提取所有的网址了。如果你需要更具体的帮助,请提供详细的HTML内容或更特别的匹配规则哦。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-7 21:42:13 | 显示全部楼层
FishC 发表于 2024-12-7 21:38
要在Python中使用正则表达式从HTML文本中匹配网址,你可以使用`re`模块。假设你的HTML存储在一个字符串变量 ...

可否解释下正则表达式 p = r'<img class="BDE_Image" src="[^"]+\.jpg.*?" .*?>'  含义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-7 21:42:19 | 显示全部楼层    本楼为最佳答案   
鬼少 发表于 2024-12-07 21:42
可否解释下正则表达式 p = r'


通过 `p = r''` 这样定义一个正则表达式,我们使用了 Python 的原始字符串(raw string)表示法。以下是其具体含义:

1. **r'' 前缀**:  
   - 在字符串前添加一个 `r`,表示这个字符串是一个"原始字符串"。这样会使得反斜杠 `\` 被视为普通字符,而不是转义字符。
   - 例如,普通字符串 `"\\n"` 会被解释为一个换行符,而原始字符串 `r"\\n"` 会被解释为两个字符:反斜杠和字母n。

2. **正则表达式中的应用**:  
   - 在正则表达式中,会频繁使用反斜杠作为转义字符,因此使用原始字符串可以避免在正则表达式中进行过多的转义。
   - 例如,普通字符串里要写 `\d` 需要用 `"\\d"`,而用原始字符串则只需写 `r'\d'`。

在上述代码中,`p = r''` 是在定义正则表达式模式 `p` 时确保反斜杠能够正常在正则表达式中工作而非作为转义字符。这是 Python 中定义正则表达式时的一个常用习惯。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-8 11:54:57 | 显示全部楼层
学一下正则不就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-8 16:34:03 | 显示全部楼层

你不必来回答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-8 19:47:06 | 显示全部楼层
鬼少 发表于 2024-12-8 16:34
你不必来回答。

我说白了,你每次问虽然能得到答案,但你不觉得麻烦吗?好好学一下,以后自己都知道挺好的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 12:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表