正则表达式的一些实例

实例1.

验证用户输入的密码是否符合要求,密码的要求是:

(1)不得少于8个字符.

(2) 只能包含大小写字母、数字和下划线.

(3) 大写字母、小写字母和数字这三种类型至少要包含两种.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import re
print('\033[1;32;1m')
print('请输入密码:\n1. 不得少于8个字符\n2.只能包含大小写字母,数字和下划线\n3.大写字母,小写字母和数字至少要包含两种')
print('\033[0m')
while True:
password=input('请输入:')
if len(password) < 8:
print('输入错误!(不得少于8个字符),请重新输入!')
else:
word=re.search('[\w_]+',password)
if word.group()==password:
a=b=c=int(0)
if re.findall('[a-z]',password) :
a=1
if re.findall('[A-Z]',password):
b=1
if re.findall('[\d]',password):
c=1
if a+b+c>=2:
print('密码正确!程序结束!')
exit()
else:
print('密码有误,重新输入!')
else:
print('2密码有误,重新输入!')

注意:\033[0m 是控制字体颜色的代码格式,详见点这里

实例2.

找出字符串”abcd123d123aad1v123“中以a开头,以123字符串结尾,但是中间不出现123这个字符串的字符串。结果应为:abcd123和ad1v123。

1
2
3
4
import re
s = 'abcd123d123ad1v123'
x = re.compile(r'a.*?123')
print(x.findall(s))

实例3.

找出”a123abvpd123dpf12ab123sabd123f1123abc”中以123字符串开头,以ab字符串结尾,但是中间不出现123和“p”这两个字符串的子字符串。结果应为:123ab和123sab和123ab。

1
2
3
4
import re
x = re.compile(r'123[^p|123]*?ab')
s = 'a123abvpd123d“p”f12ab123sabd123f1123abc'
print(x.findall(s))

实例4.

匹配电话号码.

1
2
p = re.compile(r'\d{3}-\d{6}')
print(p.findall('010-628888'))

实例5.

匹配IP.

1
2
x=re.search(r"(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5]\.)","192.168.1.1")
print(x.group())
hey!baby,站住,点它!