1. 正则表达式(单个字符匹配)
# ### 正则表达式 => 单个字符匹配 import re """ lst = re.findall(正则表达式,字符串) """ # (1) 预定义字符集 # \d 匹配数字 strvar = "sadfasdf^*&^&*^&*^&*你好 神秘男孩 2400909()()" lst = re.findall("\d",strvar) print(lst) # \D 匹配非数字 strvar = "&&*sdfjklasjdkf_sdf',神秘女孩23423岁4234234" lst = re.findall("\D",strvar) print(lst) # \w 匹配字母或数字或下划线 (正则函数中,支持中文的匹配) strvar = "uiui7887_王文&*&*" lst = re.findall("\w",strvar) print(lst) # \W 匹配非字母或数字或下划线 strvar = "uiui7887_王文&*&*" lst = re.findall("\W",strvar) print(lst) # \s 匹配任意的空白符 \n \t \r " " strvar = " 周杰伦 " lst = re.findall("\s",strvar) print(lst) # \S 匹配任意非空白符 strvar = " sdf234 " lst = re.findall("\S",strvar) print(lst) # \n 匹配一个换行符 [最好在正则表达式的前面加上r,让转义字符失效,原型化匹配] strvar = """ 王文你真帅呀,我受不了 """ lst = re.findall(r"\n",strvar) print(lst) # \t 匹配一个制表符 lst = re.findall(r"\t",strvar) print(lst) # (2) 字符组 从小组中默认选一个 lst = re.findall("[123]","451627") print(lst) print(re.findall('a[abc]b','aab abb acb adb')) # aab abb acb print(re.findall('a[0123456789]b','a1b a2b a3b acb ayb')) # a1b a2b a3b # 优化写法 0123456789 => 0-9 0到9 -是特殊字符 , 居右特殊含义 print(re.findall('a[0-9]b','a1b a2b a3b acb ayb')) # a1b a2b a3b print(re.findall('a[abcdefg]b','a1b a2b a3b acb ayb adb')) # acb adb # 优化写法 abcdefg a-g 26个小写字母 a-z print(re.findall('a[a-z]b','a1b a2b a3b acb ayb adb')) # acb adb ayb print(re.findall('a[ABCDEFG]b','a1b a2b a3b aAb aDb aYb')) # aAb aDb # 优化写法 ABCDEFG A-G 26个大写字母A-Z print(re.findall('a[A-Z]b','a1b a2b a3b aAb aDb aYb')) # aAb aDb aYb # 匹配所有的字母+数字 print(re.findall('a[0-9a-zA-Z]b','a-b aab aAb aWb aqba1b')) # aab aAb aWb aqb a1b # 优化写法 0-9a-zA-Z 0-z 范围变大 一些特殊符号也被包含进行了 , 不推荐使用 print(re.findall('a[0-z]b','a-b aab aAb aWb aqba@b')) # ['aab', 'aAb', 'aWb', 'aqb', 'a@b'] print(re.findall('a[0-9][*#/]b','a1/b a2b a29b a56b a456b')) # a1/b # ^ 出现在字符组中,代表除了 ,除了+-*/ 这个符号 都要 print(re.findall('a[^-+*/]b',"a%b ccaa*bda&bd")) # ['a%b', 'a&b'] # 匹配特殊符号 利用\ 让原来有意义的字符失效, 通过转义来实现匹配 lst = re.findall(r"a[\^\-]b","a^b a-b") print(lst) # 匹配\ lst = re.findall(r"a\\b",r"a\b") print(lst) # 显示\\ print(lst[0]) # 打印出来是一个\