鱼C论坛

 找回密码
 立即注册
查看: 98|回复: 7

[技术交流] 正则表达式疑问

[复制链接]
发表于 2024-11-25 21:34:08 | 显示全部楼层 |阅读模式

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

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

x
有如下一段正则表达式应用,

import re
re.search(r'([01]\d\d|2[0-4]\d|25[0-5]\.){3}([01]\d\d|2[0-4]\d|25[0-5])','other192.168.1.1other')

有两个问题:
1)其中的'other192.168.1.1other' , other代表什么意思?
2)执行上述代码,没有返回结果

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-25 21:36:57 | 显示全部楼层
1)在正则表达式中,字符串'other192.168.1.1other'中的"other"只是一个普通的字符串,没有特别的意义。它只是用来说明目标字符串中可能包含的其他字符。在这个例子中,正则表达式的目标是从整个字符串中提取IP地址部分。

2)执行上述代码没有返回结果的原因是正则表达式不正确。正则表达式`r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)'`试图匹配一个IP地址,但它的逻辑有误。正确的IP地址正则表达式应该是`r'(\d{1,3}\.){3}\d{1,3}'`。这个表达式会匹配四个由点分隔的数字,每个数字最多三位。


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

使用道具 举报

 楼主| 发表于 2024-11-25 22:08:10 | 显示全部楼层
FishC 发表于 2024-11-25 21:36
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

r'([01]\d\d|2[0-4]\d|25[0-5]\.){3}([01]\d\d|2[0-4]\d|25[0-5])' 里面的‘[01]’ 代表什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-25 22:08:39 | 显示全部楼层
鬼少 发表于 2024-11-25 22:08
r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)' 里面的‘’ 代表 ...


在正则表达式 `r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)'` 中,`''` 实际上是一个空字符串,没有特别的意义。这个正则表达式的主要部分是用来匹配类似 IP 地址的格式。

具体解释如下:

- `(\d\d|2\d|25\.){3}`:这个部分匹配三个段,每个段可以是两位数字(`00` 到 `99`),或者是 `20` 到 `29`,或者是 `25.`(注意这里的 `.` 是被转义的,表示字面上的点)。
- `(\d\d|2\d|25)`:这个部分匹配最后一段,可以是两位数字(`00` 到 `99`),或者是 `20` 到 `29`,或者是 `25`。

这个正则表达式试图匹配一个类似 IP 地址的格式,但它的逻辑有些问题,特别是在匹配范围和点的处理上。

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

使用道具 举报

 楼主| 发表于 2024-11-25 22:13:52 | 显示全部楼层
FishC 发表于 2024-11-25 22:08
在正则表达式 `r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)'` 中,`''` 实际上是一个空字符串,没有特别的意义 ...

r'([01]\d\d|2[0-4]\d|25[0-5]\.){3}([01]\d\d|2[0-4]\d|25[0-5])' 其中的“[01]\d\d” 代表什么意思?方括号[01]代表什么意思?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-25 22:14:19 | 显示全部楼层
鬼少 发表于 2024-11-25 22:13
r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)' 其中的“\d\d”  ...


在正则表达式 `r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)'` 中:

- `\d\d` 代表两个连续的数字字符,即匹配任意两位数字(例如:`00` 到 `99`)。
- 方括号 `[]` 在正则表达式中用于定义一个字符类,匹配方括号内的任意一个字符。不过在你提供的正则表达式中,并没有使用方括号。

如果有其他问题,欢迎继续提问!

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

使用道具 举报

 楼主| 发表于 2024-11-25 22:24:33 | 显示全部楼层
FishC 发表于 2024-11-25 22:14
在正则表达式 `r'(\d\d|2\d|25\.){3}(\d\d|2\d|25)'` 中:

- `\d\d` 代表两个连续的数字字符,即匹 ...

[01] 代表0或者1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-25 22:32:11 | 显示全部楼层


在正则表达式中,`?` 符号用于表示前面的元素出现 0 次或 1 次。换句话说,`?` 让前面的元素变成可选的,可以出现一次或根本不出现。它并不是在您提供的正则表达式中,但如果您说的是 `?`,那么这就是它的作用。

如果有更多问题,欢迎随时提问!

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-24 08:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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