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ù)組。
二、代碼如下
后面會(huì)講解代碼里的各個(gè)部分,先列出來(lái)~
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'] #貪婪,匹配從.*前面為開(kāi)始到后面為結(jié)束的所有內(nèi)容 print(re.findall(r'a.*b',str))#['aabbabaabb'] #非貪婪,遇到開(kāi)始和結(jié)束就進(jìn)行截取,因此截取多次符合的結(jié)果,中間沒(méi)有字符也會(huì)被截取 print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] #非貪婪,與上面一樣,只是與上面的相比多了一個(gè)括號(hào),只保留括號(hào)的內(nèi)容 print(re.findall(r'a(.*?)b',str))#['a', '', 'a'] str = '''aabbab aabbaa bb'''#后面多加了2個(gè)b #沒(méi)有把最后一個(gè)換行的aab算進(jìn)來(lái) print(re.findall(r'a.*?b',str))#['aab', 'ab', 'aab'] #re.S不會(huì)對(duì)\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..* 貪婪,匹配從.*前面為開(kāi)始到后面為結(jié)束的所有內(nèi)容
print(re.findall(r'a.*b',str)) ['aabbabaabb']
4..*? 非貪婪,遇到開(kāi)始和結(jié)束就進(jìn)行截取,因此截取多次符合的結(jié)果,中間沒(méi)有字符也會(huì)被截取
print(re.findall(r'a.*?b',str)) ['aab', 'ab', 'aab']
5.(.*?) 非貪婪,與上面一樣,只是與上面的相比多了一個(gè)括號(hào),只保留括號(hào)的內(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ù)無(wú)re.S,沒(méi)有把最后一個(gè)換行的aab算進(jìn)來(lái)
print(re.findall(r'a.*?b',str)) ['aab', 'ab', 'aab']
3.參數(shù)有re.S,不會(huì)對(duì)\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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python編碼時(shí)應(yīng)該注意的幾個(gè)情況
對(duì)于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à)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python使用xslt提取網(wǎng)頁(yè)數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了Python使用xslt提取網(wǎng)頁(yè)數(shù)據(jù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)
下面小編就為大家?guī)?lái)一篇Python創(chuàng)建二維數(shù)組實(shí)例(關(guān)于list的一個(gè)小坑)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Python根據(jù)成績(jī)分析系統(tǒng)淺析
在本篇文章里小編給大家分享了關(guān)于Python根據(jù)成績(jī)分析是否繼續(xù)深造一個(gè)系統(tǒng)的相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2019-02-02

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

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