鱼C论坛

 找回密码
 立即注册
查看: 89|回复: 3

[已解决]关于python正则表达式中的分组的问题

[复制链接]
发表于 2024-5-24 17:18:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 sky19791111 于 2024-5-24 17:19 编辑

在利用正则表达式进行匹配时,如下:
例题1:
m = re.match(r"(abc)+", "abcabc")
m.groups()的结果是("abc",)
疑问1:结果为什么不是("abc","abc");疑问2:结果中怎么还有个",",这是什么意思?

例题2:
m = re.match(r"([abc])+", "abc")
m.groups()的结果是("c",)
疑问1:结果为什么不是("abc");疑问2:同上。
最佳答案
2024-5-24 17:18:51
例题1的结果是("abc",),不是("abc',)。结果中的逗号是为了区分多个分组的值,因此在只有一个分组的情况下也会出现逗号。这是正则表达式模块的规定,无法去掉逗号。

对于例题1,正则表达式是"(abc)+",表示匹配一个或多个连续的"abc"。而在字符串"abcabc"中,有两个连续的"abc",所以匹配成功。但当有多个分组时,默认返回最后一次匹配的分组的值,即"abc"。

对于例题2,正则表达式是"()",意思是匹配一个空的分组。在字符串"abc"中,没有匹配到空的分组,所以匹配失败。而在匹配失败时,正则表达式模块会返回最后一个分组匹配到的字符串的值,即"c"。

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

使用道具 举报

发表于 2024-5-24 17:18:51 | 显示全部楼层    本楼为最佳答案   
例题1的结果是("abc",),不是("abc',)。结果中的逗号是为了区分多个分组的值,因此在只有一个分组的情况下也会出现逗号。这是正则表达式模块的规定,无法去掉逗号。

对于例题1,正则表达式是"(abc)+",表示匹配一个或多个连续的"abc"。而在字符串"abcabc"中,有两个连续的"abc",所以匹配成功。但当有多个分组时,默认返回最后一次匹配的分组的值,即"abc"。

对于例题2,正则表达式是"()",意思是匹配一个空的分组。在字符串"abc"中,没有匹配到空的分组,所以匹配失败。而在匹配失败时,正则表达式模块会返回最后一个分组匹配到的字符串的值,即"c"。

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

使用道具 举报

 楼主| 发表于 2024-5-24 17:28:32 | 显示全部楼层
1、有关例题2
例题2:
m = re.match(r"([abc])+", "abc")
正则表达式应该是"([abc])+",表示匹配一个或多个连续的"a或b或c"吧?
2、对于"(......)+"这种正则表达式,在进行groups()时,其结果就是最后一次匹配的内容呗?而不是重复几次,就返回几个分组的内容?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-24 17:28:45 | 显示全部楼层
sky19791111 发表于 2024-05-24 17:28
1、有关例题2
例题2:
m = re.match(r"()+", "abc")
...


对于例题2,正则表达式是"()",没有指定具体的字符内容。这个正则表达式实际上匹配一个空的分组。

当使用"+ "表示一个或多个时,它会贪婪地匹配尽可能多的字符。在字符串"abc"中,没有匹配到空的分组,所以匹配失败。因此结果是空的元组,即()。

关于对于"(......)+"这种正则表达式,groups()方法返回的结果确实是最后一次匹配的内容,而不是重复几次就返回几个分组的内容。

例如,对于正则表达式"(abc)+"和字符串"abcabc",虽然有两个连续的"abc",但groups()方法只返回最后一次匹配的分组的内容,即"abc"。

如果您想要获取所有匹配到的分组的内容,可以使用findall()方法。例如,对于上述的例题1,可以使用以下代码来获取所有匹配到的分组:
import re

m = re.findall(r"(abc)+", "abcabc")
print(m)  # 输出: ['abc', 'abc']

这样就能得到所有匹配到的分组的内容了。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 06:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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