Python 正则表达式(一)

正则表达式

正则表达式是一种用来匹配字符串的强有力的武器。设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,就认为它“匹配”,否则就不匹配。

使用re模块进行正则表达式

匹配字符串

1.用match()方法匹配(从字符串开头开始匹配)

import re     #导入re模块
pattern = r'mr_\w'  # 定义模式字符串
string =  'MR_SHOP mr_shop'  #要匹配的字符串
match = re.match(pattern,string,re.I)  #匹配字符串 ,第三个可选参数re.I表示不区分大小写,默认区分大小写
print(match)  #输出
<_sre.SRE_Match object; span=(0, 4), match='MR_S'>
#获取起始位置和结束位置
print("起始位置:",match.start()) 
print("结束位置:",match.end()) 
print("匹配数值:",match.group())
起始位置: 0
结束位置: 4
匹配数值: MR_S
#例 将上述字符串中的S换成汉字“我”
import re     #导入re模块
pattern1 = r'mr_\w'  # 定义模式字符串
string1 =  'MR_我HOP mr_我hop'  #要匹配的字符串
match1 = re.match(pattern1,string1,re.I)  #匹配字符串 ,第三个可选参数re.I表示不区分大小写,默认区分大小写
print(match1)  #输出
<_sre.SRE_Match object; span=(0, 4), match='MR_我'>
#获取起始位置和结束位置
print("起始位置:",match1.start()) 
print("结束位置:",match1.end()) 
print("匹配数值:",match1.group())
起始位置: 0
结束位置: 4
匹配数值: MR_我
#例 在字符串前面加上其它元素
pattern2 = r'mr_\w'  # 定义模式字符串
string2 =  '我爱祖国MR_SHOP mr_shop'  #要匹配的字符串
match2 = re.match(pattern2,string2,re.I)  #匹配字符串 ,第三个可选参数re.I表示不区分大小写,默认区分大小写
print(match2)  #输出
None
# 验证输入手机号码是否合法,假设中国移动的号码为13开头,第三位是4-9,后八位是任意数字或15开头,第三位是01289,后八位是任意数字
import re
patt = r'(13[4-9]\d{8})|(15[01289]\d{8})$'   #中国移动手机号规则模式
mobile = "13612345678"   #要匹配的手机号码
match = re.match(patt,mobile)
if match == None:
    print(mobile,"不是中国移动的手机号码")
else :
    print(mobile,"是中国移动的手机号码")

13612345678 是中国移动的手机号码
#更换一个不符合移动手机号码的电话
import re
patt = r'(13[4-9]\d{8})|(15[01289]\d{8})$'   #中国移动手机号规则模式
mobile2 = "13356789876"   #要匹配的手机号码
match = re.match(patt,mobile2)
if match == None:
    print(mobile2,"不是中国移动的手机号码")
else :
    print(mobile2,"是中国移动的手机号码")


13356789876 不是中国移动的手机号码

2.用search()方法在整个字符串中匹配第一个符合要求的字符,不匹配后面满足条件的字符

#采用上述例子,字符串前面加上其它字符后进行匹配
import re
pattern3 = r'mr_\w'  # 定义模式字符串
string3 =  '我爱祖国MR_SHOP mr_shop'  #要匹配的字符串
match3 = re.search(pattern3,string3,re.I)  #匹配字符串 ,第三个可选参数re.I表示不区分大小写,默认区分大小写
print(match3)  #输出
<_sre.SRE_Match object; span=(4, 8), match='MR_S'>
#例 字符中是否含有颜色字符
import re
patt1 = r'(黄色)|(蓝色)|(紫色)|(黑色)'  #定义模式
a1 = "我喜欢的颜色包括红色和紫色" # 定义字符串
search1 = re.search(patt1,a1)
if search1 == None:
    print(a1,"不存在含有颜色的字符")
else:
    print(a1,"存在含有颜色的字符")
我喜欢的颜色包括红色和紫色 存在含有颜色的字符
#换一句不存在颜色的字符串语句
a2 = "今天的天气真好呀,适合游玩!"
search2 = re.search(patt1,a2)
if search2 == None:
    print(a1,"不存在含有颜色的字符")
else:
    print(a1,"存在含有颜色的字符")
我喜欢的颜色包括红色和紫色 不存在含有颜色的字符

3.用findall()匹配整个字符串中所有满足条件的字符,输出结果为列表形式

#继续使用前面的例子
import re     #导入re模块
pattern4 = r'mr_\w'  # 定义模式字符串
string4 =  'MR_SHOP mr_shop'  #要匹配的字符串
match4 = re.findall(pattern4,string4,re.I)  #匹配字符串 ,第三个可选参数re.I表示不区分大小写,默认区分大小写
print(match4)  #输出
['MR_S', 'mr_s']
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈伦2019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值