python==re正则表达式

1 简介

正则表达式(Regular Expression,简写为regex,regexp或RE),是对字符串(包括普通字符(如a~z)和特殊字符(元字符))操作的一种逻辑公式,即事先定义好的一些特定字符及特定字符的组合,组成一个"规则字符串",这个规则字符串用来表达对字符串的一种过滤逻辑,正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串.
RE通常用于检索,替换符合某个模式的文本.

2 目的

  • 匹配:对给定的字符串是否符合设定的正则表达式进行过滤;
  • 搜索:在给定的字符串中检索出符合设定的字符串;

2 使用

2.1 符号说明

序号符号描述
1‘\’转义符
2^匹配输入字首行
3$匹配输入行尾
4{n}n为非负整数,匹配确定的n次,如’a{2}'不能匹配’abc’中的a,但是可以匹配’aabc’中的两个a
5\d匹配一个数字字符,\d{3}表示匹配三个数字
6{n,}n为非负整数,至少匹配n次,'a{2}‘不能匹配’abc’中的’a’,可匹配’aaaaaaa’中所有的a,'a{1,}‘等价于’a+’,'a{0,}‘等价于’a*’
7{m,n}m,n均为非负整数,其中m<n,最少匹配m次,最多匹配n次

2.2 简单使用

2.2.1 re.match(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string需要匹配的字符串
flags=0标志位,用于控制正则表达式的匹配方式,如区分大小写,多行匹配
import re
import re
a = re.match(r'^(\d{2})', '1')
b = re.match(r'^(\d{2})', '12')
c = re.match(r'^(\d{4})-(\d{2})-(\d{2})$', '2018-11-12')
d = re.match(r'a{3}', 'aa')
e = re.match(r'a{3}', 'aaa')
print("a match: {}".format(a))
print("b match: {}".format(b))
print("c match: {}".format(c))
print("c match: {}".format(c.span()))
print("c match: {}".format(c.start()))
print("c match: {}".format(c.end()))
print("c match: {}".format(c.group()))
print("d match: {}".format(d))
print("e match: {}".format(e))

  • 结果
a match: None
b match: <_sre.SRE_Match object; span=(0, 2), match='12'>
c match: <_sre.SRE_Match object; span=(0, 10), match='2018-11-28'>
c match: (0, 10)
c match: 0
c match: 10
c match: 2018-11-28
d match: None
e match: <_sre.SRE_Match object; span=(0, 3), match='aaa'>
  • 解析
    (1) 匹配不成功,返回:None;
    (2) 匹配成功返回:_sre.SRE类,即<_sre.SRE_Match object; span=(0, 2), match=‘12’>,包含匹配元组的起始位置,及匹配的内容;
    (3) 通过设定返回方法,去不同的返回值.
方法描述
span()返回一个元组包含的匹配(起始)位置
start()返回匹配开始的位置
end()返回匹配结束的位置
group返回re整体匹配的字符串

2.2.2 re.search(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string需要匹配的字符串
flags=0标志位,用于控制正则表达式的匹配方式,如区分大小写,多行匹配
f = re.search('2018', '2018-11-28')
g = re.search('2019', '2018')
print("f search: {}".format(f))
print("f search: {}".format(f.span()))
print("f search: {}".format(f.start()))
print("f search: {}".format(f.end()))
print("f search: {}".format(f.group()))
print("g search: {}".format(g))
  • 结果
f search: <_sre.SRE_Match object; span=(0, 4), match='2018'>
f search: (0, 4)
f search: 0
f search: 4
f search: 2018
g search: None

[参考文献]
[1]https://www.cnblogs.com/tina-python/p/5508402.html
[2]https://baike.baidu.com/item/%E6%AD%A3%E5%88%9%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin


更新ing
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天然玩家

坚持才能做到极致

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

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

打赏作者

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

抵扣说明:

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

余额充值