鱼C论坛

 找回密码
 立即注册
查看: 1354|回复: 2

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

[复制链接]
发表于 2023-8-21 16:57:42 | 显示全部楼层 |阅读模式

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

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

x
import re
m = re.findall("([abc])+", 'abc')
print(m)


import re
m = re.findall("[abc]+", 'abc')
print(m)

为什么两段代码执行的结果会不一样,谁能解释一下么
最佳答案
2023-8-21 16:59:00
在这两段代码中,使用了不同的正则表达式模式,并且调用了 re.findall() 函数来匹配字符串中的模式。

第一段代码使用的正则表达式模式是 "([abc])+",它表示匹配连续出现的字符 'a''b''c'。当在字符串 'abc' 中执行匹配时,正则表达式模式将成功匹配整个字符串,并将结果作为一个匹配组返回。因此,结果是 ['c'],即匹配到的最后一个字符。

第二段代码使用的正则表达式模式是 "[abc]+",它表示匹配连续出现的字符 'a''b''c' 的任意组合。当在字符串 'abc' 中执行匹配时,正则表达式模式将成功匹配整个字符串,并将结果作为一个匹配项返回。因此,结果是 ['abc'],即匹配到的整个字符串。

总结起来,第一段代码匹配的是连续出现的字符,而第二段代码匹配的是整个字符串。这就是两段代码执行结果不一样的原因。

希望这个解释对您有帮助!如果有任何其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-21 16:58:11 | 显示全部楼层
这两段代码执行结果不同是因为正则表达式的匹配方式不同。

第一段代码使用的是"([abc])+"的正则表达式,它表示匹配一个或多个连续的a、b、c中的任意一个字符,并将匹配结果作为一个组返回。在这个例子中,字符串'abc'中有一个连续的abc,所以返回的匹配结果为['abc']。

第二段代码使用的是"[abc]+"的正则表达式,它表示匹配一个或多个连续的a、b、c中的任意一个字符。在这个例子中,字符串'abc'中有一个连续的abc,所以返回的匹配结果为['abc']。

两段代码的结果都是一样的,只是返回结果的形式略有不同。第一段代码返回的是一个包含一个组的列表,而第二段代码返回的是一个包含匹配结果的列表。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-21 16:59:00 | 显示全部楼层    本楼为最佳答案   
在这两段代码中,使用了不同的正则表达式模式,并且调用了 re.findall() 函数来匹配字符串中的模式。

第一段代码使用的正则表达式模式是 "([abc])+",它表示匹配连续出现的字符 'a''b''c'。当在字符串 'abc' 中执行匹配时,正则表达式模式将成功匹配整个字符串,并将结果作为一个匹配组返回。因此,结果是 ['c'],即匹配到的最后一个字符。

第二段代码使用的正则表达式模式是 "[abc]+",它表示匹配连续出现的字符 'a''b''c' 的任意组合。当在字符串 'abc' 中执行匹配时,正则表达式模式将成功匹配整个字符串,并将结果作为一个匹配项返回。因此,结果是 ['abc'],即匹配到的整个字符串。

总结起来,第一段代码匹配的是连续出现的字符,而第二段代码匹配的是整个字符串。这就是两段代码执行结果不一样的原因。

希望这个解释对您有帮助!如果有任何其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 17:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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