1 # 我 VS 正则
2
3 # 今天我来讲述一下我与正则之间的快乐时光
4
5 # Day1:
6
7 # 首先要导入正则包
8 import re
9
10 # re.match 从头开始向右匹配 匹配到后就结束
11 # re.search 从任意位置开始向右匹配 匹配到后就结束
12
13
14 # 1. 以 h 开头 (只要是‘h’开头就可以)
15 line = "htticjs2123"
16 # line = "ayyehhc"
17 # 匹配
18 match_res = re.match('h',line)
19 # 查看匹配结果
20 if match_res:
21 print('匹配成功')
22 print(match_res)
23 else:
24 print('匹配失败')
25 #--------------------------------------------------
26 # 2. 以h开头后面跟着一个字符 (只要后面不是空就可以)
27
28 '''
29 # "." 匹配任意一位字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
30
31 '''
32
33 line = "h tticjs2123"
34 # line = "ayyehhc"
35 # 匹配
36 match_res = re.match('h.',line)
37 # 查看匹配结果
38 if match_res:
39 print('匹配成功')
40 print(match_res)
41 else:
42 print('匹配失败')
43
44 #--------------------------------------------------
45 # 2.1 . 以h开头后面必须跟着一个 `.`
46 # line = 'h111111222' #这种情况不该匹配上
47 line = 'h.22' #这种情况可以匹配上
48
49
50 # 反斜杠使我们的第二个特殊字符
51 match_res = re.match('h\.', line)
52 # 需要匹配的字符串, 能不能符合结果
53 if match_res:
54 print('匹配成功')
55 else:
56 print('匹配失败')
57 #--------------------------------------------------
58 # 2.2 . 以h开头后面必须跟着一个 `\`
59
60 # 'h\\' 计算机内部代表的字符串就是 h\
61 line = 'h\\'
62 print(len(line))
63 # 'h\\\\' 计算机内部代表的字符串就是 h\\
64 line2 = 'h\\\\'
65 print(len(line2))
66
67 line = 'h\n'
68 print(line)
69 print(len(line))
70 # 'h\n' https://www.processon.com/view/link/5b74cb1ee4b053a09c366d87
71 match_res = re.match(r'h\n', line)
72 if match_res:
73 print('匹配成功')
74 print(match_res)
75 else:
76 print('匹配失败')
77 #--------------------------------------------------
78 line = r'h\\'
79 print(len(line))
80
81 # 反斜杠使我们的第二个特殊字符
82 # 当匹配的时候, 字符串内部的\ 被当做转义字符, h\\能够匹配的字符串就是h\
83 match_res = re.match('h\\\\', line)
84 # 需要匹配的字符串, 能不能符合结果
85 if match_res:
86 print('匹配成功')
87 else:
88 print('匹配失败')
89 #--------------------------------------------------
90 # 2.3 以h开头后面只跟着一个字符
91 line = 'h2k'
92 # $ 特殊字符.
93 match_res = re.match('h.', line)
94 # 需要匹配的字符串, 能不能符合结果
95 if match_res:
96 print('匹配成功')
97 else:
98 print('匹配失败')
99 #--------------------------------------------------
100 # 3. 以h开头后面跟着任意数量的数字
101 '''
102 # "\d" 匹配任意数字,等价于 [0-9].
103 # "*" 匹配0个或多个的表达式
104
105 '''
106
107 line = "h2123xxd"
108 # line = "ayyehhc"
109 # 匹配
110 match_res = re.match('h\d.*',line)
111 # 查看匹配结果
112 if match_res:
113 print('匹配成功')
114 print(match_res)
115 else:
116 print('匹配失败')
117 #--------------------------------------------------
118 # 4. 以3结尾
119
120 '''
121 # "$" 匹配以该符号前面一个字符结尾的字符串
122
123 '''
124
125 line = "htticjs2123"
126 # line = "ayyehhc"
127 # 匹配
128 match_res = re.match('.*3$',line)
129 # 查看匹配结果
130 if match_res:
131 print('匹配成功')
132 print(match_res)
133 else:
134 print('匹配失败')
135 #--------------------------------------------------
136 # 5. 以h开头,以3结尾,中间只有一个字符
137
138
139 line = "h23"
140 # ^ 代表着以这里开头儿
141 # 匹配 'h.3$' '^h.3$'
142 match_res = re.match('^h.3$',line)
143 # 查看匹配结果
144 if match_res:
145 print('匹配成功')
146 print(match_res)
147 else:
148 print('匹配失败')
149 #--------------------------------------------------
150 # 6. 以h开头,以3结尾,中间可以存在任意数量的字符串
151 line = "htticjs2123"
152
153 # 匹配 'h.*3$' '^h.*3$'
154 match_res = re.match('h.*3$',line)
155 # 查看匹配结果
156 if match_res:
157 print('匹配成功')
158 print(match_res)
159 else:
160 print('匹配失败')