正则表达式 Regular Express

正则表达式

正则表达式可以被认为是一门语言,专门用来处理字符串匹配,其语法构成只有表达式。

正则表达式通过元字符进行排列组合来匹配字符串。
也可以通过简单字符来进行匹配,相当于字符串匹配。

元字符

元字符是具有固定含义的特殊符号。

 常见元字符有:

  • . 匹配除换行符以外的所有字符

    想要单纯匹配一个**.**时需要加转义字符\。比如:\.

  • \w 匹配数字字母下划线

  • \d 匹配数字字符

  • \s 匹配任意空白符

  • \n 匹配换行符

  • \t 匹配制表符

  • ^ 匹配开始

    例如匹配一个字符串开始为"zhang" :"^zhang"

  • $ 匹配结束

  • \W 匹配非(除换行符以外的所有字符)

    匹配\w不匹配的内容。

  • \D 匹配非数字字母下划线

    匹配\d不匹配的内容。

  • \S 匹配非任意空白符

    匹配\s不匹配的内容。

  • a|b | 表示匹配字符a|b

    例如匹配字符串中的"zhang"或"wang":(zhang|wang)

  • () 在表达式中嵌套表达式或改变表达式优先级

  • [...] 匹配字符组中的内容

    常见的有 [a-z] 表示匹配所有小写字母 或 [_a-z0-9A-Z] 表示的意义与\w相同。

  • [^...] 匹配非字符组中的内容

    表示匹配不在字符组中的内容

量词

 量词搭配元字符使用

  • * 表示待匹配内容出现0次或多次

    \d*表示匹配一个或多个数字

  • + 表示待匹配内容至少出现一次

    .+表示至少出现一次数字或字母或下划线

  • ? 表示待匹配内容出现0次或1次

  • {n} 表示待匹配内容出现n次

    \d{11}匹配一个11位数字,可以用来匹配电话号码
    匹配一个9位或11位的qq号:"^(\d{9}|\d{11})$"

  • {n,} 表示待匹配内容出现至少n次

  • {n,m} 表示待匹配内容出现n次至m次

Python中的re模块

不同语言对正则表达式有不同的接口,方便我们使用。这里使用Python中的re模块(regular express缩写),处理正则表达式进行匹配。

re.search(pattern,string)
接收一个正则表达式pattern和字符串string返回一个对象re.Match使用成员方法group()可以取出匹配到的内容。

特点:匹配到一个就返回。

resp = re.search(r'\d*\.{1}\d+',"p3.1415926")

print(resp.group()) # 输出: 3.1415926

re.match(pattern,string)
接收一个正则表达式pattern和字符串string返回一个对象re.Match使用成员方法group()可以取出匹配到的内容。

特点:从字符串头开始匹配,匹配到一个就返回。

resp = re.match(r'\d*\.{1}\d+',"p3.1415926")

print(resp) # 从头开始匹配无法匹配到值 输出:None

re.findall(pattern,string)
接收一个正则表达式pattern和字符串string返回一个list放有所有符合表达式的结果串。

特点:返回所有。

resp = re.findall(r'\d',"1a2b3c4d--")

print(resp) # 输出:1234

re.finditer(pattern,string)
接收一个正则表达式pattern和字符串string返回一个可迭代对象使用for循环可以发现取出的每一项都是一个对象re.Match

特点:返回一个可迭代对象。

resp = re.finditer(r'\d',"1a2b3c4d--")

for item in resp:
    print(item.group())
"""
输出:
1
2
3
4
"""
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sophon、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值