python之正则表达式回顾(部分)

python之正则表达式回顾

分组

分组–符号: ()

特点

  • 将括号中的内容看成一个整体
  • 捕获()内容 使用带括号的正则表达式匹配成功后,只获取括号中的内容
  • 重复 可以通过 \数字 来重复前面()中匹配到的结果。数字代表前第几个分组
#组合
import re
# 匹配一个字符串
re_str =r'(\d.*?[a-zA-Z]){2}'
str_test ="1sacas1asas1sa2ass"
print(re.findall(re_str,str_test))
# 捕获
re_str =r'(\d[a-z].*?\d)'
str_test ="1sacas1asas1sa2ass"
print(re.findall(re_str,str_test))
# 重复
re_str =r'([a-z]{3})-(\d{3})\1'
# \1 是重复第一个组的字符(必须一模一样)
str_test ="cas-154cas"
print(re.findall(re_str,str_test))
print(re.fullmatch(re_str,str_test))

结果:

[‘1a’, ‘2a’]
[‘1sacas1’, ‘1sa2’]
[(‘cas’, ‘154’)]
<re.Match object; span=(0, 10), match=‘cas-154cas’>

括号

[] (匹配中括号中出现的任意一个字符)

[字符集] 匹配一个字符,这字符是字符集中的任意一个字符

[字符1-字符2]

匹配一个字符,这个字符是Unicode编码值在字符1到字符2中的任意一个字符;字符1的编码值要小于字符2

例如:

[1-9] 数字1到9

[a-z] 小写字母

[A-Z] 大写字母

[\u0031-\u0039] --> 数字1到9

[\u4E00-\u9fa5] --> 匹配所有的汉字

注意:- 字符在中括号中,如果放在两个字符之间表示范围。

fullmatch和match

fullmatch(pattern正则表达式字符串, str字符串)

用正则表达式去完全匹配字符串(匹配整个字符串),返回匹配对象(re.Match object)或者None

match(pattern正则表达式字符串, str字符串)

匹配字符串开头,返回匹配对象或者None

findall

findall(pattern正则表达式字符串, str字符串)

获取字符串中满足正则表达式的所有的子串,返回一个列表。

如果正在表达式中有分组,只返回分组中匹配到的结果;

如果有多个分组,则将每个分组匹配到的结果返回到一个元祖中

sapn

span(group=0)

获取匹配成功的区间(左闭右开区间)

re_str =r'([a-z]{3})-(\d{3})\1'
# \1 是重复第一个组的字符(必须一模一样)
str_test ="cas-154cas"
print(re.findall(re_str,str_test))
print(re.fullmatch(re_str,str_test))
result = re.fullmatch(re_str,str_test)
print(type(result))
print(result.span())
print(result.start()) # 获取匹配到的开始下标
print(result.end()) # 获取匹配到的结束下标后的下标

结果

<re.Match object; span=(0, 10), match=‘cas-154cas’>

[(‘cas’, ‘154’)]
<class ‘re.Match’>
(0, 10)

0
10

group

group(group = 0) 获取完全匹配结果

group(index>0) 获取正则表达式中第index个分组匹配到的结果

re_str =r'([a-z]{3})-(\d{3})\1'
# \1 是重复第一个组的字符(必须一模一样)
str_test ="cas-154cas"
result = re.fullmatch(re_str,str_test)
print(result.group())#获取完全匹配结果
print(result.group(0))#获取完全匹配结果
print(result.group(1))#获取第1个分组的
print(result.group(2))#获取第2个分组的

结果:

cas-154cas
cas-154cas
cas
154

string

获取被匹配的原字符串

re_str =r'([a-z]{3})-(\d{3})\1'
# \1 是重复第一个组的字符(必须一模一样)
str_test ="cas-154cas"
result = re.fullmatch(re_str,str_test)
print(result.group())#获取完全匹配结果
print(result.group(0))#获取完全匹配结果
print(result.group(1))#获取第1个分组的
print(result.group(2))#获取第2个分组的
print("返回原字符串:",result.string)

结果:

cas-154cas
cas-154cas
cas
154
返回原字符串: cas-154cas

search

search(pattern正则表达式字符串, str字符串)

查找字符串中满足正则表达式的第一个字符串,返回值是匹配对象(re.Match object)或者None。

re_str =r'(\d[a-z].*?\d)'
str_test ="1sacas1asas1sa2ass"
print(re.search(re_str,str_test))

结果:

<re.Match object; span=(0, 7), match=‘1sacas1’>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值