- 写一个正则表达式判断一个字符串是否是ip地址
ip = input('请输入ip地址:')
# ip分为三位数的情况:1[0-9][0-9]、2[0-4][0-9]、25[0-5]两位数的情况:[1-9][0-9]一位数的情况:[0-9]
str = r'^((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))$'
if re.fullmatch(str,ip):
print('正确')
else:
print('错误')
结果:
- 计算一个字符串中所有的数字的和
str = 'hello90abc 78sjh12.5'
re_str = r'\d+\.\d|\d+'
values = re.findall(re_str,str)
sum1 = 0
for value in values:
sum1 += float(value)
print(sum1)
结果:
- 验证输入的内容只能是汉字
# 汉字的编码范围 4E00-9FA5
re_content = r'[\u4e00-\u9fa5]+'
while True:
content = input('请输入汉字:')
if re.fullmatch(re_content,content):
print('输入的不是汉字')
else:
print('是汉字')
break
结果:
- 电话号码的验证
while True:
tel = input('请输入电话号码:')
re_tel = r'^1[3|4|5|8][0-9]\d{8}$'
if re.fullmatch(re_tel,tel):
print('输入正确')
break
else:
print('输入错误')
结果:
- 简单的身份证号的验证
# 身份证15位编码规则:dddddd yymmdd xx p
# dddddd:6位地区编码
# yymmdd: 出生年(两位年)月日,如:910215
# xx: 顺序编码,系统产生,无法确定
# p: 性别,奇数为男,偶数为女
#
# 身份证18位编码规则:dddddd yyyymmdd xxx y
# dddddd:6位地区编码
# yyyymmdd: 出生年(四位年)月日,如:19910215
# xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
# y: 校验码,该位数值可通过前17位计算获得
# 15位:[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3} 月份为01-12;日期为:01-31
# 18位:[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx]) 多了年份的判断:第一位为1-9;后面3个为数字
while True:
id = input('请输入身份证号码:')
re_id = r'^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$'
if re.fullmatch(re_id,id):
print('输入正确')
break
else:
print('输入错误')
结果:
二、不定项选择题
- 能够完全匹配字符串“(010)-62661617”和字符串“01062661617”的正则表达式包括(A、B、D )
A. “(?\d{3})?-?\d{8}”
B. “[0-9()-]+”
C. “[0-9(-)]\d*”
D. “[(]?\d[)-]*\d*”
能够完全匹配字符串“c:\rapidminer\lib\plugs”的正则表达式包括(B、C )
A. “c:\rapidminer\lib\plugs”
B. “c:\rapidminer\lib\plugs”
C. “(?i)C:\RapidMiner\Lib\Plugs” ?i:将后面的内容的大写变成小写
D. “(?s)C:\RapidMiner\Lib\Plugs” ?s:单行匹配能够完全匹配字符串“back”和“back-end”的正则表达式包括( A、C、D )
A. “\w{4}-\w{3}|\w{4}” match->back,back-end fullmatch-> back,back-end
B. “\w{4}|\w{4}-\w{3}” match-> back, back fullmatch-> back,back-end
C. “\S+-\S+|\S+”
D. “\w\b-\b\w|\w*”能够完全匹配字符串“go go”和“kitty kitty”,但不能完全匹配“go kitty”的正则表达式包括(A、C、D )
:\1就是重复前面第一个()/组合里面的内容
:\2就是重复前面第二个()/组合里面的内容
A. “\b(\w+)\b\s+\1\b”
B. “\w{2,5}\s*\1”
C. “(\S+) \s+\1”
D. “(\S{2,5})\s{1,}\1”能够在字符串中匹配“aab”,而不能匹配“aaab”和“aaaab”的正则表达式包括(B、C )
A. “a*?b”
B. “a{,2}b”
C. “aa??b”
D. “aaa??b”