Re正则表达式


First

import re # 导入re模块

pattern 格式

特殊字符表

在这里插入图片描述

重复出现的字符串

对于重复出现的字符串可以用大括号内部加上重复次数的方式表达

r'\d{5}'
分组

使用小括号分组

r'(\d{3})-(\d{7})'
重复出现的字符串

对于重复出现的字符串可以用大括号内部加上重复次数的方式表达

r'\d{5}'
重复出现的字符串

对于重复出现的字符串可以用大括号内部加上重复次数的方式表达

r'\d{5}'
重复出现的字符串

对于重复出现的字符串可以用大括号内部加上重复次数的方式表达

r'\d{5}'

# 使用小括号分组
r'(\d{3})-(\d{7})'

# |(pipe)在正则表示法中称为管道,使用管道时可以同时查找比对多个字符串
r'\d|b{2}'

# 在正则表达式中若是
# 某些括号内的字符串或正则表达式可有可无,
# 执行查找时都算成功,例如,na字符串可有可无,表达方式是(na)?

# # 在正则表达式中若是某些字符串
# 或正则表达式可为0到多次,
# 执行查找时都算成功,例如,
# na字符串可为0到多次,表达方式是(na)*。

# 在正则表达式中若是某些字
# 符串或正则表达式可为1到多次,执行查
# 找时都算成功,例如,na字符串可为1到
# 多次,表达方式是(na)+。

# r'a{3,5}' = r'a{3}|a{4}|a{5}'

# 使用大括号时,也可以省略第一个或第二个数字
# ,这相当于不设置最小或最大重复次数。
# 例如,a{3,}代表重复3次以上都符合,a{,10}代表重复10次以下都符合

# a{3,5} 在用 search() 时默认return重复最多的字符串,这是Python的默认模式,这
# 种模式又称为贪婪(greedy)模式。另一种是列出重复最少的字符串,
# 这称为非贪婪模式,方法是在正则表达式的查找模式右边增加?符号。
# a{3,5}?


# Python可以使用中括号来设置字符,可参考下列范例。
# [a-z]:代表a~z的小写字符。
# [A-Z]:代表A~Z的大写字符。
# [aeiouAEIOU]:代表英文发音的元音字符。
# [2-5]:代表2~5的数字。
# [2-5.]会查找2~5的数字和句点
# 字符的处理中,如果在中括号内的左方加上^字符,意义是查找不在这些字符内的所有字符。
# 在正则表示法中起始位置加上^字符,表示是正则表示法的字符串必须出现在被查找字符串的起始位置,如果查找成功才算成功。

# 正则表示法的末端放置'$'字符时,表示是正则表示法的字符串必须出现在被查找字符串的最后位置,如果查找成功才算成功。

# 通配符(wildcard)“.”表示可以查找除了换行字符以外的所有字符,但是只限定一个字符。
# 如果查找的是真正的“.”字符,必须使用反斜杠“\.”。
Re

使用re.compile( )建立Regex对象
ob = re.compile(r'\d\d\d\d')

  • 用’\d’表示0-9的数字
  • 字符串前加r可以防止字符串内的转义字符被转义

使用isdecimal( )方法判断字符是否为0~9的数字
在这里插入图片描述

m = ob.search(msg) # 使用search( )只返回第一个发现的字符串
m = ob.findall(msg) # 用列表方式返回所有现字符串
m.group() # 返回比对符合的字符串

# 可以省略使用re.compile( )直接将比对模式放在各自的参数内
re.search(pattern,string,flags)
re.findall(pattern,string,flags)

查找时若是在search( )或findall( )内增加第三个参数re.I或re.IGNORECASE,查找时就会忽略大小写,

# 可以使用group( )返回比对符合的不同分组
# ,例如,group()或group(0)返回第一个比对相符的文字,
# group(1)则返回括号的第一组文字,
# group(2)则返回括号的第二组文字。
# groups()取得各个分组的内容


re.findall(m,'bb5n4n4mb644nma a')

re模块的另一个方法是re.match( ),这个方法其实和re.search( )相同,差异是re.match( )是只查找比对字符串开始的字,如果失败就算失败。re.search( )则是查找整个字符串。至于re.match( )查找成功会返回MatchObject对象,若是查找失败会返回None,这部分与re.search( )相同。

MatchObject方法:
在这里插入图片描述

# 用“.*”查找时碰上换行字符,查找就停止。Python的re模块提供参数re.DOTALL,功能是查找时包括换行字符,可以将此参数放在search( )、findall( )或compile()。

Python re模块内的sub( )方法可以用新的字符串取代原本字符串的内容。
在这里插入图片描述

pattern是要查找的字符串,如果查找成功则用newstr取代,同时成功取代的结果返回给result变量,如果查找到多个相同字符串,这些字符串将全部被取代,需留意原先msg内容将不会改变。如果查找失败则将msg内容返回给result变量,当然msg内容也不会改变。

# 如果想在正则表达式中加上注释,必须配合使用re.VERBOSE参数,然后将此参数放在search( )
# 、findall( )或
# compile( )中。
r'''
\d| # 数字
\D # 其他字符
'''  

re.IGNORECASE,re.DOTALL,re.VERBOSE参数,
可以分别在re.search( )、re.findall( )、re.match( )或是re.compile( )方法内使用它们,
可是一次只能放置一个参数,如果想要一次放置多个参数,应如何处理?
方法是使用管道|

在这里插入图片描述

电子邮件地址的pattern。

试一下手咯
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值