藉助ADB凍結與解除安裝Android系統應用(免ROOT)
阿新 • • 發佈:2020-08-18
一、findall與search方法
import re ret = re.findall('\d', '19621asd1695412rf') print(ret) ret1 = re.search('\d+r', '19621asd1695412rf') print(ret1) # 物件 if ret1: print(ret1.group())
# 分組現象 # findall 按照完整的正則進行匹配,但是顯示括號裡匹配到的內容 ret2 = re.findall('9(\d)\d', '19621asd1695412rf') print(ret2) ret3 = re.search('9(\d)(\d)', '19621asd1695412rf') print(ret3) # 物件 if ret3: print(ret3.group()) # 取第一個符合正則的內容 print(ret3.group(1)) # group(n)指定獲得的第n個分組匹配到的內容 print(ret3.group(2)) # 為什麼在search中不需要分組優先,而在findall中需要? # findall # 加上括號,是為了對真正需要的內容進行提取 s = '<h1>dasdsa930sadsa02391-</h1>' ret = re.findall('<.*?>(.*)</.*?>', s) print(ret[0]) # search ret = re.search('<.*?>(.*)</.*?>', s) print(ret.group(1)) # 為什麼要用分組,以及findall的分組優先 s1 = '2-3*(5+6)' # 匹配出a+b 或者a-b 並計算它們的結果 ret = re.findall('(\d+)\+(\d+)', s1) print(ret) print(int(ret[0][0]) + int(ret[0][1])) # with open('movie_name.txt', encoding='utf-8') as f: #print(f.read()) content = f.read() r = re.findall('<span class="title">(.*?)</span>.*?</a>', content, flags=re.S) print(r) print(len(r)) # 如果我們要查詢的內容在一個複雜的環境中 # 我們要查詢的內容並沒有一個突出的特點,甚至會和不需要的資料雜亂的混合在一起 # 這個時候我們就需要把所有的資料都統計出來,然後對這個資料進行篩選,把我們真正 # 需要的資料對應的正則表示式用()括起來 # 這樣我們就可以拿到真正想要的資料啦 # 取消分組的優先順序 ret = re.findall('1(?:\d)(\d)', '123') # 取消第一個分組的優先順序 print(ret)
二、其他方法
import re # findall *** # search *** # # compile *** --節省程式碼時間的工具 # # 假如同一個正則表示式要被使用多次,就可以先解析該正則表示式並通過一個變數儲存下來 # ret = re.compile('\d+') # print(ret.findall('s961gdx123fd')) # # # # finditer *** --節省空間 # ret = re.finditer('\d+', 's961gdx123fd') # 迭代器 # for i in ret: # print(i.group()) # 先 compile(如果沒有重複使用同一個正則,也不能節省時間)後finditer ret = re.compile('\d+') res = ret.finditer('fd321df6fd46d11') for i in res: print(i.group()) # # match 預設從頭開始匹配,一般用來規定該字串必須是什麼樣的 # ret = re.match('\d+', '123eva456taibai') # print(ret.group()) # # split # ret = re.split('\d+', 'alex222wusir') # print(ret) # ret = re.split('\d(\d)\d', 'alex222wusir') # 保留括號內被切掉的內容 # print(ret) # # # # sub 替換 將正則匹配到的內容替換成別的內容 # ret = re.sub('\d+', 'H', 'alex123wusir456') # print(ret) # # # # subn # 也是替換,返回替換後的內容和替換的次數形成的元組 # ret = re.subn('\d+', 'H', 'alex123wusir456') # print(ret) # 功能 # 效能 # 時間: # 完成一個程式碼所需要執行的程式碼行數 # 執行程式碼的過程中,底層程式是如何工作的 # 空間 # 是佔用了寶貴的記憶體資源 # 英雄程式的執行效率 # 使用者體驗
三、分組命名
# 分組命名:(?P<組名>正則) (?P=組名) import re ret = re.search('\d(\d)\d(?P<name1>\w+?)(\d)(?P<name2>\w)', '1231sd1_52432ghbr') print(ret.group('name1')) print(ret.group('name2')) # 分組命名的引用:**** exp = '<h1>sad654a6s4dv</h1><a>5621df</a>' ret = re.search('<(?P<n1>\w+)>(.*?)</(?P=n1)>', exp) print(ret.group()) print(ret.group(2)) # 方式二:不常用 # exp = '<h1>sad654a6s4dv</h1><a>5621df</a>' # ret = re.search(r'<(\w+)>(.*?)</\1>', exp) # print(ret.group()) # print(ret.group(2)) # r"" 取消字串內部所有的轉義 ret = re.search(r'\\n', r'\n') print(ret.group())