Nmbh 发表于 2020-6-25 21:27:24

关于正则表达式的 ‘|’和非捕获组的问题

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

import re
string = 'industries and industry'

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

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

re.findall(r'industr(?:y|ies)',string)
>>>['industries', 'industry']

liuzhengyuan 发表于 2020-6-25 21:56:32

findall 专门捕获小括号里的字符
TA就是这个功能
页: [1]
查看完整版本: 关于正则表达式的 ‘|’和非捕获组的问题