Python findall中的正则表达式析取与完整子字符串不匹配
在一些在线测试程序中,regexPython findall中的正则表达式析取与完整子字符串不匹配,python,regex,Python,Regex,在一些在线测试程序中,regexa(b | c)z匹配字符串“abz acz”中的“abz”和“acz”,但Python的re.findall()只匹配“b”和“c” 我错过了什么 In[42]: re.findall(r'a(b|c)z', 'abz acz') Out[42]: ['b', 'c'] 那是因为你正在使用捕获参数 re.findall(r'a(?:b|c)z', 'abz acz') ?:将导致它成为非捕获括号这是因为您使用的是捕获括号 re.findall(r'a(?:b
a(b | c)z
匹配字符串“abz acz”中的“abz”和“acz”,但Python的re.findall()只匹配“b”和“c”
我错过了什么
In[42]: re.findall(r'a(b|c)z', 'abz acz')
Out[42]: ['b', 'c']
那是因为你正在使用捕获参数
re.findall(r'a(?:b|c)z', 'abz acz')
?:
将导致它成为非捕获括号这是因为您使用的是捕获括号
re.findall(r'a(?:b|c)z', 'abz acz')
?:
将导致它成为非捕获括号这是因为您使用的是捕获括号
re.findall(r'a(?:b|c)z', 'abz acz')
?:
将导致它成为非捕获括号这是因为您使用的是捕获括号
re.findall(r'a(?:b|c)z', 'abz acz')
?:
将使其成为非捕获括号使用findall
,捕获的组将返回:
如…中所述
返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配将包含在结果中,除非它们触及另一个匹配的开头
您只需在此处使用
>>> re.findall(r'a[bc]z', 'abz acz')
['abz', 'acz']
使用
findall
,将返回捕获的组:
如…中所述
返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配将包含在结果中,除非它们触及另一个匹配的开头
您只需在此处使用
>>> re.findall(r'a[bc]z', 'abz acz')
['abz', 'acz']
使用
findall
,将返回捕获的组:
如…中所述
返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配将包含在结果中,除非它们触及另一个匹配的开头
您只需在此处使用
>>> re.findall(r'a[bc]z', 'abz acz')
['abz', 'acz']
使用
findall
,将返回捕获的组:
如…中所述
返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配将包含在结果中,除非它们触及另一个匹配的开头
您只需在此处使用
>>> re.findall(r'a[bc]z', 'abz acz')
['abz', 'acz']
谢谢,对我来说,这个答案解决了根本问题:我不知道捕获括号和非捕获括号之间的区别。请看,谢谢,对我来说,这个答案解决了根本问题:我不知道捕获括号和非捕获括号之间的区别。请看,谢谢,对我来说,这个答案解决了根本问题:我不知道捕获括号和非捕获括号之间的区别。请看,谢谢,对我来说,这个答案解决了根本问题:我不知道捕获括号和非捕获括号之间的区别。看见