正则表达式:由一系列特殊字符拼接而成的表达式/规则,该表达式用于从一个大字符串中匹配符合规则的字符串
import re
#\w 匹配字母数字及下划线
print(re.findall('\w\w\w','h ello 123_(0")'))#一个\w站一个位置
#\W (大写w匹配非字母数字下划线
#\s 匹配任意空白字符,等价于[\t\n\r\f]
#\S 匹配任意非空字符
#\d匹配任意数字,等价于[0-9]
#\D匹配任意非数字
#\A匹配字符串开始
#\Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串
#\z匹配字符串结束
#\G匹配最后匹配完成的位置
#\n匹配一个换行符
#\t匹配一个制表符
^匹配字符串的开头
print(re.findall('^egon','egon asdf 1231 egonjaejroaejrdegon'))
$匹配字符串的末尾
print(re.findall('egon$','egon egon asdf 1231 egonjaejroaejrdegon' ))
.匹配任意字符,除了换行符,党re.DOTALL标记被指定是,则可以匹配包括换行符的任意字符
[...]用来表示一组字符,单独列出:[amk]匹配'a','m'或'k'
[^...]不在[]中的字符:[^abc]
匹配除了a,b,c之外的字符
*匹配0个或多个的表达式
+匹配1个或多个的表达式
?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{n}精确匹配n个前面表达式
{n,m}匹配n到m次由前面的正则表达式定义的片段,贪婪方式
a|b匹配a或b
()匹配括号内的表达式
print(re.findall('ab+','ababab123')) #['ab', 'ab', 'ab']
# print(re.findall('(ab)+123','ababab123')) #['ab'],匹配到末尾的ab123中的ab
# ababab123
#(ab)(ab)(ab)(ab)
#取消分组
print(re.findall('(f:ab)+123','ababab123'))
#findall的结果不是匹配的全部内容,而是组内的内容,?:可以让结果为匹配的全部内容
print(re.findall('a\\\\c','a\c a1c aac')) #对于正则来说a\\c确实可以匹配到a\c,但是在python解释器读取a\\c时,会发生转义,然后交给re去执行,所以抛出异常
print(re.findall(r'a\\c','a\c a1c aac')) #对于正则来说a\\c确实可以匹配到a\c,但是在python解释器读取a\\c时,会发生转义,然后交给re去执行,所以抛出异常
面向对象编程:
核心是对象二字,对象是一个用来盛放数据与功能的容器
基于该思想写程序就是在整合程序
优点:可扩展性强
缺点:编程的复杂度高
(与面向过程编程相反,也是相辅相成的)
def choose_course():
print('===>'){"name":"egn","age":18,"choose":choose_course}