Python re.findall中正則表達(dá)式(.*?)和參數(shù)re.S使用
一、re.findall函數(shù)介紹
它在re.py中有定義:
def findall(pattern, string, flags=0): """Return a list of all non-overlapping matches in the string. If one or more capturing groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group. Empty matches are included in the result.""" return _compile(pattern, flags).findall(string)
返回string中所有與pattern匹配的全部字符串,返回形式為數(shù)組。
二、代碼如下
后面會講解代碼里的各個(gè)部分,先列出來~
import re str = 'aabbabaabbaa' #一個(gè)"."就是匹配除 \n (換行符)以外的任意一個(gè)字符 print(re.findall(r'a.b',str))#['aab', 'aab'] #*前面的字符出現(xiàn)0次或以上 print(re.findall(r'a*b',str))#['aab', 'b', 'ab', 'aab', 'b'] #貪婪,匹配從.*前面為開始到后面為結(jié)束的所有內(nèi)容 print(re.findall(r'a.*b',str))#['aabbabaabb'] #非貪婪,遇到開始和結(jié)束就進(jìn)行截取,因此截取多次符合的結(jié)果,中間沒有字符也會被截取 print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] #非貪婪,與上面一樣,只是與上面的相比多了一個(gè)括號,只保留括號的內(nèi)容 print(re.findall(r'a(.*?)b',str))#['a', '', 'a'] str = '''aabbab aabbaa bb'''#后面多加了2個(gè)b #沒有把最后一個(gè)換行的aab算進(jìn)來 print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] #re.S不會對\n進(jìn)行中斷 print(re.findall(r'a.*?b',str,re.S))#['aab', 'ab', 'aab', 'aa\n b']
三、re.findall中正則表達(dá)式(.*?)
字符串是
str = 'aabbabaabbaa'
1.一個(gè) . 就 是匹配除 \n (換行符)以外的任意一個(gè)字符
print(re.findall(r'a.b',str)) ['aab', 'aab']
2.* 前面的字符出現(xiàn)0次或以上
print(re.findall(r'a*b',str)) ['aab', 'b', 'ab', 'aab', 'b']
3..* 貪婪,匹配從.*前面為開始到后面為結(jié)束的所有內(nèi)容
print(re.findall(r'a.*b',str)) ['aabbabaabb']
4..*? 非貪婪,遇到開始和結(jié)束就進(jìn)行截取,因此截取多次符合的結(jié)果,中間沒有字符也會被截取
print(re.findall(r'a.*?b',str)) ['aab', 'ab', 'aab']
5.(.*?) 非貪婪,與上面一樣,只是與上面的相比多了一個(gè)括號,只保留括號的內(nèi)容
print(re.findall(r'a(.*?)b',str)) ['a', '', 'a']
四、re.findall中參數(shù)re.S的意義
1.字符串變?yōu)?后面多加了2個(gè)b)
str = '''aabbab aabbaa bb'''
2.參數(shù)無re.S,沒有把最后一個(gè)換行的aab算進(jìn)來
print(re.findall(r'a.*?b',str)) ['aab', 'ab', 'aab']
3.參數(shù)有re.S,不會對\n進(jìn)行中斷
print(re.findall(r'a.*?b',str,re.S)) ['aab', 'ab', 'aab', 'aa\n b']
到此這篇關(guān)于Python re.findall中正則表達(dá)式(.*?)和參數(shù)re.S使用的文章就介紹到這了,更多相關(guān)Python re.findall內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編碼時(shí)應(yīng)該注意的幾個(gè)情況
對于Python程序員,你需要注意一下本文所提到的這些事情。你也可以看看Zen of Python(Python之禪),這里面提到了一些注意事項(xiàng),并配以示例,可以幫助你快速提高2013-03-03keras使用Sequence類調(diào)用大規(guī)模數(shù)據(jù)集進(jìn)行訓(xùn)練的實(shí)現(xiàn)
這篇文章主要介紹了keras使用Sequence類調(diào)用大規(guī)模數(shù)據(jù)集進(jìn)行訓(xùn)練的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python使用xslt提取網(wǎng)頁數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了Python使用xslt提取網(wǎng)頁數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)
下面小編就為大家?guī)硪黄狿ython創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11

python 定時(shí)器,實(shí)現(xiàn)每天凌晨3點(diǎn)執(zhí)行的方法

Python定義函數(shù)實(shí)現(xiàn)累計(jì)求和操作