python正则学习一

2023-05-14,,

元字符之. ^ $ * + ? { }
.匹配是:如果匹配一个就写一个点,如果匹配多个字,就写几个点字
>>> a = re.findall('b...dd','bsssdd')
>>> print(a)
['bsssdd']
如:
> a = re.findall('b..dd','bsssdd')
>>> print(a)
[]
解释:因为两个点,需要匹配的中间有三个导致不能匹配

^表达式:
>>> re.findall('^a..s','abcsassss')
['abcs']
>>> re.findall('a..s','abcsassss')
['abcs', 'asss']
>>> re.findall('^a..s','abcsassss')
['abcs']
>>>

如果在逗号里面支匹配一个,如果^在逗号外面是最大匹配内容。只有能满足的都匹配出来。
$匹配是从最后开始匹配,如果么有提示空,如果有就匹配一个:
>>> re.findall('a.b$','abbdddddabb')
['abb']
>>> re.findall('$a.b','abbdddddabb')
[]
*匹配:
表示:如果匹配成功后,最后一个字符会最大去匹配内容:
>>> re.findall('abc*','sabcccc')
['abcccc']
>>> re.findall('abc*','sabcccgewec')
['abccc']
>>>
?表达式:如果匹配成功就停止匹配;
>>> re.findall('abc?','abccc')
['abc']
>>> re.findall('abc+','abccc')
['abccc']
>>> re.findall('abc*','abccc')
['abccc']
>>> re.findall('abc?','abccc')
['abc']

{}匹配规则:现在条件如:{1,3}表示只有满足1~3个中的任何一个就行。第一个数字需要小于第二个否则会出错
>>> re.findall('abc{1,4}','abccc')
['abccc']
>>>
>>> re.findall('abc{1,4}','abcccccccccccccccc')
['abcccc']
>>> re.findall('abc{1,2}','abcccccccccccccccc')
['abcc']

元字符之字符集[]:表示里面有几个值是或者的关系,但只能是一个,如非加{才能限制长度匹配}
>>> re.findall('a[b,c]{1}d?','abcddssaddddd')
['ab']
>>>