python中的正则表达式问题

时间:2018-03-11 15:11:38

标签: python

为什么正则表达式中的无限通配符(*)在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'>

1 个答案:

答案 0 :(得分:0)

案例一:
正则表达式说:
查找具有大写字母后跟1到400个小写字母的内容
这给了一个打印,它打印的那个。

案例二:
正则表达式说:
查找包含一个大写字母后跟 0 到无限小写字母的内容
在这种情况下,每个大写字母单独命中一次,再加上你以前的同一个命中。