初识正则表达式


 1 # 计算器 每天写一个小时
 2 # 选课系统 每天一个小时
 3 # re模块
 4 """正则表达式"""   # *****非常重要
 5 """
 6 所有的模块要经历的两个步骤:
 7         1.要操作的概念本身:   正则表达式      例子:   时间
 8         2.使用模块去操作它:    re                   time
 9         
10 """
11 # 学习  正则表达式 本身
12 #    1.什么是正则表达式?
13 #           一种匹配字符串的规则
14 #       例子:  input  一串数据
15 #                # 判断是不是qq号码: 根据qq号的特征  全数字 5位以上  12位一下,第一位不是0
16 #                # 判断是不是身份证号:  18位/  15位(老身份证号)  第一位不是0,18位的最后以为可能是x或者数字
17 #            有一个文件:
18 #                   把文件中所有的手机号都摘取出来
19 #    2.正则表达式能做什么?
20 #             可以定制一个规则:
21 #                 来确认某一个字符串是否符合规则
22 #                 从大段的字符串中找到符合规则的内存
23 #             # 程序领域
24 #                    1.登录注册页的表单验证   web开发 要求简单的语法
25 #                    2.爬虫       爬虫: 把这个网页下载下来从里面提取一些信息,找到我要的所在信息,做数据分析
26 #                    3.自动化开发    # 日志分析
27 # 明确一件事情:
28 #       正则表达式是一种独立的语法
29 #       和python语言无关
30 # 帮助你学习的工具: http://tool.chinaz.com/regex/
31 #     3. 正则表达式的语法:
32 #               1.元字符:
33 #                       字符组 [] 在一个字符位置能够出现哪些内容
34 #                                           [1bc]     第一个位置出现 1\b\c 都是可以的
35 #                                   [0-9][A-Z][a-z]     匹配三个字符
36 #                                       [0-9abc] :表示匹配一个字符   0到9和a\b\c都可以
37 #                                                   ASCII  数字<大写字母<小写字母
38 #                                       18位身份证号  [1-9][0-9][0-9]
39 #                                           \d  == [0-9]  也表示匹配一个字符,匹配的是一个数字    digit
40 #                                           \w  == [0-9a-zA-Z_] 也表示匹配一个数字字母下划线    word
41 #                                           \s  ==[\n \t]回车 空格 制表符tab  匹配所有的空白符   space
42 #                                                  \n  只匹配回车
43 #                                                  \t  只匹配制表符
44 #                                            \D    匹配非数字
45 #                                            \W    匹配非数字字母下划线
46 #                                            \S    匹配非空白
47 #                                                 [\d\D]   [\w\W] [\s\S]匹配所有
48 #                                           \b  单词的边界  h\b  表示  h结尾的地方    \bh表示 h来头的地方
49 #                                      ^ 表示匹配开头   $ 匹配结尾         ^ $ (限定死) 匹配一个字符串的开始和结尾
50 #                                       a|b  匹配a也行匹配b也行    把长的放前面
51 #                                           [^abc]   非字符组
52 #                                               .   匹配除了换行符的任意字符
53 #               2.量词
54 #                                 \d{3}    数字匹配三次
55 #                                \d\d{3}    数字 数字匹配三次
56 #                                  \d{3,}  至少匹配3次      贪婪匹配
57 #                                 \d{3,5}   至少3次 最多5次
58 #                                 \d?  匹配0次 或1次
59 #                               # ? + *    ? 0次或1次      + 一次或多次     * 0次或多次
60 #                               # {n}
61 #               3.特殊的用法和想象
62 #                       问号的使用:
63 """
64                         在量词的后面跟了一个问?     ??  *?  +?    表示取消贪婪匹配  惰性匹配
65                         .*?x  匹配任意字符直到直到x                .*x  找到最长的x
66 """
67 # 匹配15位或18位身份证号
68 # [1-9]\d{16}[0-9X]|[1-9]\d{14}   身份证号  或的用法
69 # [1-9]\d{14}(\d{2}[0-9X])?     身份证号    分组的用法
70 #  \d+(\.\d*)?       121.0 5.2   0.65   56.33 小数 或者整数
71 """
72 # 元字符
73 # 元字符+量词   默认贪婪匹配   
74 # 元字符+量词?  惰性匹配  
75 """
76 # 练习1  连续3个数字
77 # \d{3}
78 # 练习2 1 连续2个相同的 数字
79 #  (\d)\1
80 # 练习3  连续3个相同的  数字
81 # (\d)\1{2}
82 # \1 表示匹配第一个括号里面的内容
83 # 练习4 匹配连续3个或3个以上的连续的数字
84 # (\d)\1{2,}
85 # 练习 5 电话号码
86 # [1][1-9]\d{9}
87 # 练习 6 正整数
88 #  [1-9]\d*
89 # 负整数
90 #  -[1-9]\d*