pyhton re模块
正則表達式本身是一種小型的、高度專業化的編程語言,而在python中,通過內嵌集成re模塊,程序員們可以直接調用來實現正則匹配。正則表達式模式被編譯成一系列的字節碼,然后由用C編寫的匹配引擎執行。
re的匹配語法 ?%re.name("匹配規則", "要匹配的字符串")
re.match() 從頭開始匹配,即只匹配第一個值
re.search() 匹配包含,匹配到第一個就不往下匹配
re.findall() 把所有匹配到到的字符以列表的形式返回
re.splital() 以匹配到的字符當做列表分隔符
re.sub () 匹配字符并替換
re.fullmatch() 全部匹配
>>> import re >>> a = 'a2fho54d' >>> re.match('[0-9]',a) >>> re.match('a',a) <_sre.SRE_Match object; span=(0, 1), match='a'> >>> re.search('[0-9]',a) <_sre.SRE_Match object; span=(1, 2), match='2'> >>> re.findall('[0-9]',a) ['2', '5', '4']View Code
如何將match和search方法返回的對象打印出來呢?
import re a = 'a2fho54d' re_res = re.search('[0-9]', a) if re_res:print(re_res.group()) ############## 2View Code (二)常用正則表達式符號
'.'?????默認匹配除\n之外的任意一個字符,若指定flag DOTALL,則匹配任意字符,包括換行'^'?????匹配字符開頭,若指定flags MULTILINE,這種也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)'$'?????匹配字符結尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以'*'?????匹配*號前的字符0次或多次,re.findall("ab*","cabb3abcbbac")? 結果為['abb',?'ab',?'a']'+'?????匹配前一個字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 結果['ab',?'abb']'?'?????匹配前一個字符1次或0次'{m}'???匹配前一個字符m次'{n,m}'?匹配前一個字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 結果'abb',?'ab',?'abb']'|'?????匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 結果'ABC''(...)'?分組匹配,re.search("(abc){2}a(123|456)c",?"abcabca456c").group() 結果 abcabca456c
'\d' ? 匹配任何十進制數,它相當于類[0-9]
'\d+' ?如果需要匹配一位或者多位數的數字時用
'\D' ? 匹配任何非數字字符,它相當于類[^0-9]
'\s' ? ?匹配任何空白字符,它相當于類[\t\n\r\f\v]
'\S' ? ?匹配任何非空白字符
'\w' ? ? ?匹配包括下劃線在內任何字母數字字符,它相當于類[a-zA-Z0-9_]
'\W' ? ?匹配非任何字母數字字符包括下劃線在內,它相當于類[^a-zA-Z0-9_]
操作代碼如下:
>>> import re >>> re.match('.','fjfi34') <_sre.SRE_Match object; span=(0, 1), match='f'> >>> re.match('.','383449') <_sre.SRE_Match object; span=(0, 1), match='3'> >>> re.match('.','\fjidak') <_sre.SRE_Match object; span=(0, 1), match='\x0c'>
? >>> re.match('..','abdf')
? <_sre.SRE_Match object; span=(0, 2), match='ab'>
>>> re.search('^a','abgd') #表示匹配以a開頭 <_sre.SRE_Match object; span=(0, 1), match='a'> >>> re.search('^ab','abghus') #此時等價于re.match('ab','abhufjj') <_sre.SRE_Match object; span=(0, 2), match='ab'> >>> re.search('^b','abghuus') #匹配不上 >>>
>>> re.search('b$','fsffb') #表示匹配以b結尾 <_sre.SRE_Match object; span=(4, 5), match='b'>
>>> re.search('a*','fhsbs') ? #表示匹配*前面的字符多次或0次
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search('a*','afhusd')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search('abc*','abchuccabcccug') ? #a必須匹配和b連著,b可以是0個或多個
<_sre.SRE_Match object; span=(0, 3), match='abc'>
......................
?
轉載于:https://www.cnblogs.com/ydb258741/p/9240499.html
總結
以上是生活随笔為你收集整理的pyhton re模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五菱宏光LzW6430kF型号怠速电机多
- 下一篇: crt证书iis 中引用 程序目录提示