为什么正则表达式中的无限通配符(*)在python中被区别对待?请告诉我为什么如果我得到的输出不同于案例2 ?
案例一:
import re
b= None
a=None
while a!='chk':
a=input()
b= re.findall('[A-Z][a-z]{1,400}',a)
if b!=None:
print(b,bool(b),type(b))
if a=='chk':
break
output:
CAPITALLETTERSsmallletters
['Ssmallletters'] True <class 'list'>
案例二:
import re
b= None
a=None
while a!='chk':
a=input()
b= re.findall('[A-Z][a-z]*',a)
if b!=None:
print(b,bool(b),type(b))
if a=='chk':
break
output:
CAPITALLETTERSsmallletters
['C', 'A', 'P', 'I', 'T', 'A', 'L', 'L', 'E', 'T', 'T', 'E', 'R', 'Ssmallletters'] True <class 'list'>
答案 0 :(得分:0)
案例一:
正则表达式说:
查找具有大写字母后跟1到400个小写字母的内容
这给了一个打印,它打印的那个。
案例二:
正则表达式说:
查找包含一个大写字母后跟 0 到无限小写字母的内容
在这种情况下,每个大写字母单独命中一次,再加上你以前的同一个命中。