### 正则表达式 匹配单个字符
思路:匹配的是什么,匹配多少个
import re
lst = re.findall(正则表达式,要匹配的字符串)
返回列表,按照正则表达式匹配到的内容都扔到列表里
默认从左向右
预定义字符集
\d 匹配数字
lst = re.findall("\d","asdlfkjasdklfjkla_()()*(*(23423sdf4")
print(lst)
\D 匹配非数字
lst = re.findall("\D","asdlfkjasdklfjkla_()()*(*(23423sdf4")
print(lst)
\w 匹配字母或数字或下划线 (正则函数中,支持中文的匹配)
lst = re.findall("\w","sdf&&&s9%%89!!!_你好")
print(lst)
\W 匹配非字母或数字或下划线
lst = re.findall("\W","sdf&&&s9%%89!!!_你好")
print(lst)
\s 匹配任意的空白符 \n \t \r ’ ’
lst = re.findall("\s"," ")
print(lst)
\S 匹配任意非空白符
lst = re.findall("\S" , " aa bb")
print(lst)
\n 匹配一个换行符
strvar = """
xboy 他是一个 神秘男孩
字符组 必须匹配中括号里列举的字符[]只能取一个 (.)匹配任意字符的一个 除了\n
lst = re.findall("[abc]","oputuopctyauobpt")
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
优化: -是一个特殊的字符,代表的是一个范围 0-9 0123456789
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
优化: [a-g] 如果想要表达所有的26个小写字母[a-z]
print(re.findall('a[a-g]b','a1b a2b a3b acb ayb adb')) #acb adb
print(re.findall('a[ABCDEFG]b','a1b a2b a3b aAb aDb aYb')) #aAb aDb
优化: [A-G] 如果想要表达所有的26个大写字母[A-Z]
print(re.findall('a[A-G]b','a1b a2b a3b aAb aDb aYb')) #aAb aDb
print(re.findall('a[0-9a-zA-Z]b','a-b aab aAb aWb aqba1b')) #aab aAb aWb aqb a1b
注意: [0-z] 代表数字 小写 大写 不可以这样写
print(re.findall('a[0-z]b','a@b aab aAb aWb aqba1b')) #aab aAb aWb aqb a1b
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
如果想要匹配^ 或者 -, 在原来的字符前面加上,让字符的含义失效.r是为了防止转义
lst = re.findall(r"e[\^\-]f","e^f e-f")
print(lst)
匹配 \
lst = re.findall(r"a\\c","a\c")
print(lst)
print(lst[0])
res = re.findall(r'a\\b',r'a\b')
res = re.findall(r'a\\n',r'a\n')
print(res)
print(res[0])
res = re.findall(r"a[\^\\]b",r"a^b a\b")
print(res) # ['a^b', 'a\\b']
print(res[1])
### 正则表达式 多个字符的匹配
import re
量词练习
'''1) ? 匹配0个或者1个a '''
print(re.findall('a?b',