鱼C论坛

 找回密码
 立即注册
查看: 968|回复: 1

[已解决]关于正则表达式的 ‘|’和非捕获组的问题

[复制链接]
发表于 2020-6-25 21:27:24 | 显示全部楼层 |阅读模式

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

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

x
最近学正则表达式,知道‘|’表示或的意思,就想动手试一下用(r'industr(y|ies)')捕获‘industry’和‘industries’。
结果用re.search可以捕获'industries',而用re.findall只能捕获小括号中的'y'和'ies',要用非捕获式才能在re.findall中捕获‘industries’和‘industry’。
求大神解答为什么‘(y|ies)’在re.findall中的结果和re.search中不一样?

  1. import re
  2. string = 'industries and industry'

  3. re.search(r'industr(y|ies)',string)
  4. >>><re.Match object; span=(0, 10), match='industries'>

  5. re.findall(r'industr(y|ies)',string)
  6. >>>['ies', 'y']

  7. re.findall(r'industr(?:y|ies)',string)
  8. >>>['industries', 'industry']
复制代码
最佳答案
2020-6-25 21:56:32
findall 专门捕获小括号里的字符
TA就是这个功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-25 21:56:32 | 显示全部楼层    本楼为最佳答案   
findall 专门捕获小括号里的字符
TA就是这个功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 13:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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