1.split:切割 使用split不會返回被切割的字元 結果為:['', 'as', 'asf', 'asf', 'a'] 要想返回被切割的數字,需要在正則表達式前後加( ) 結果為:['', '5', 'as', '46', 'asf', '46', 'asf', '46', 'a'] 2.分組 ...
1.split:切割
使用split不會返回被切割的字元
1 import re 2 ret = re.split("\d+","5as46asf46asf46a") 3 print(ret)
結果為:['', 'as', 'asf', 'asf', 'a']
要想返回被切割的數字,需要在正則表達式前後加( )
1 import re 2 ret1 = re.split("(\d+)","5as46asf46asf46a") 3 print(ret1)
結果為:['', '5', 'as', '46', 'asf', '46', 'asf', '46', 'a']
2.分組命名:(?P<這個組的名字>正則表達式)
1 import re 2 s = "<a>wahaha</a>" 3 ret = re.search("<\w+>(?P<abc>\w+)</\w+>",s) 4 print(ret.group())#結果為<a>wahaha</a> 5 print(ret.group("abc"))#結果為wahaha
3.使用findall可以取到分組中的內容,在表達式中加( )可以優先顯示分組中的內容
1 import re 2 s = "<a>wahaha</a>" 3 ret = re.findall("<\w+>(\w+)</\w+>",s) 4 print(ret)#結果為["wahaha"]
如果要取消分組優先,使用(?:正則表達式)
1 import re 2 s = "<a>wahaha</a>" 3 ret = re.findall("<\w+>(\w+)</\w+>",s) 4 ret1 = re.findall("<\w+>(?:\w+)</\w+>",s) 5 print(ret)#結果為["wahaha"] 6 print(ret1)#結果為["<a>wahaha</a>"]
在網頁html中,如果使用分組,要求使用這個名字的分組和前面的同名分組中的內容匹配的必須一致
前一個標簽可以用?P<tab>,後一個標簽可以用?P=tab
import re
1 pattern = "<(?P<tab>\w+)>(\w+)</(?P=tab)>" 2 ret = re.search(pattern,s) 3 print(ret.group())#結果為:<a>wahaha</a>
4.
1 import re 2 ret1 = re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))") 3 print(ret1)結果為:['1', '2', '60', '40.35', '5', '4', '3']
如果要過濾掉小數:
1 import re 2 ret2 = re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))") 3 print(ret2)結果為:['1', '2', '60', '', '5', '4', '3']