正則表達式(1)-元字符
為我自己做一下筆記,發現很多爬蟲在做批配,如果用
if-elif-else好像就無法很精準,尤其在處理截取漢字的部
份,所以還是學一下正則幫助自己提升。
假設我以這個字串例
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲"
然後我代入
import re
如果我要查找"blairan"😅我網路上使用的英文名啦
我就可以寫成一個簡單的批配碼
import re
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲"
reg='blairan'
result=re.findall(reg, reg_string)
print(result)
得到的結果如下:
PS D:\python> & C:/Python38/python.exe d:/python/test3.py
['blairan']
假如字串裡有兩組一樣的排列字串,就會顯示兩組blaian在列表裡
import re
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲blairan"
reg='blairan'
result=re.findall(reg, reg_string)
print(result)
PS D:\python> & C:/Python38/python.exe d:/python/test3.py
['blairan', 'blairan']
常見的元字符
Python中常見元字符及其含義如下:
| 元字符 | 含義 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配数字字母下划线汉字 |
| \s | 匹配任意空白符 |
| \d | 匹配所有的数字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的开始结束 |
假設我現在要批配數字,我可以用\d
import re
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲blairan"
reg='\d'
result=re.findall(reg, reg_string)
print(result)
PS D:\python> & C:/Python38/python.exe d:/python/test3.py
['8', '7', '3', '4', '5', '9', '6']
假如現在我想把"妳好喲"中文除外的字串找出來,可以寫成
import re
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲blairan"
reg='[^妳好喲]'
result=re.findall(reg, reg_string)
print(result)
關於" ^ "符號是查找字串的開始
那現在我想要把大小寫英文字全都不要,可以這樣寫
import re
reg_string = "hello8734596python@blairanctk$.@!:xbwa;kdpijqwn,妳好喲blairan"
reg='[^a-zAZ]'
result=re.findall(reg, reg_string)
print(result)
PS D:\python> & C:/Python38/python.exe d:/python/test3.py
['8', '7', '3', '4', '5', '9', '6', '@', '$', '.', '@', '!', ':', ';', ',', '妳', '好', '喲']
還有一種反義代碼,就是上面提到元字符的相反
Python中常见反義代碼 及其含義如下:
| 反義代碼 | 含義 |
|---|---|
| \W | 匹配任意不是数字字母下划线汉字的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配非数字 |
| \B | 匹配不是单词的开始或结束 |
| [^a] | 匹配除了a以外的任意字符 |
| [^abcd] | 匹配除了abcd以外的任意字符 |
今天先紀錄到這裡,要消化的東西好多.....
沒有留言:
張貼留言