python正则表达式详解之元字符及分组(小白必看)

一、正则表达式1.1 对正则表达式的理解及python中正则使用的基本方法1.1.1对正则表达式的理解正则表达式由普通文本字符和特殊字符(元字符)两种字符组成的一系列的字符串的模式,。元字符在正则表达式中具有特殊意义,它让正则表达式具有更丰富的表达能力。例如,正则表达式 r"a.d"中 ,字符 ‘a’ 和 ‘d’ 是普通字符,’.’ 是元字符,. 可以指代任意字符,它能匹配 ‘a1d’、’a2d’、’acd’等。1.1.2python中正则表达式的基本使用方法在Python中,利用re模
摘要由CSDN通过智能技术生成

一、正则表达式
1.1 对正则表达式的理解及python中正则使用的基本方法
1.1.1对正则表达式的理解

正则表达式由普通文本字符和特殊字符(元字符)两种字符组成的一系列的字符串的模式,
。元字符在正则表达式中具有特殊意义,它让正则表达式具有更丰富的表达能力。例如,
正则表达式 r"a.d"中 ,字符 ‘a’ 和 ‘d’ 是普通字符,’.’ 是元字符,. 可以指代任意字符,
它能匹配 ‘a1d’、’a2d’、’acd’等。

1.1.2python中正则表达式的基本使用方法

在Python中,利用re模块处理正则表达式,如下代码:

import re
 
#字符串1
regx_string='aab'
 
#字符串2
regx_string2='anb'
 
#生成一个匹配的正则表达式对象
pattern=re.compile('a.b')
 
#匹配字符串1
m1=pattern.match(regx_string)
 
print(m1)
# <_sre.SRE_Match object; span=(0, 3), match='aab'>
 
#匹配字符串2
m2=pattern.match(regx_string2)
 
print(m2)
# <_sre.SRE_Match object; span=(0, 3), match='anb'>
 
#字符串3
regx_string3='and'
 
m3=pattern.match(regx_string3)
 
print(m3)
# None

说明:match方法在字符串与正则表达式匹配的时候,返回的是一个Match对象,如果不匹配,则返回的是None

python中另一种使用正则的方法:

# match(pattern, string, flags=0)
m4=re.match('a.b',regx_string)
 
print(m4)
# <_sre.SRE_Match object; span=(0, 3), match='aab'>

1.2 python正则表达式中的元字符

1.2.1:"."

“.” 匹配除换行符之外的任何字符:字母、数字、符号、空白字符.

#示例:
#匹配一个以ab开关的字符串
print(re.match('^ab.*','abccd$#2'))
# <_sre.SRE_Match object; span=(0, 8), match='abccd$#2'>
 
#匹配一个以ac开关的字符串
print(re.match('^ac.*','abccd$#2'))
# None

1.2.3:"$"

“$” 匹配字符串的末尾或字符串末尾的换行符之前

#示例:
#匹配一个ac结尾的字符串:
print(re.match('.*ac$','adsfasdfac'))
# <_sre.SRE_Match object; span=(0, 10), match='adsfasdfac'>
 
#看结束点
print(re.match('.*ac$','adsfacdfac\n'))
# <_sre.SRE_Match object; span=(0, 10), match='adsfacdfac'>
 
print(re.match('.*ac$','adsfac\ndfac'))
# None

说明:$是一般情况下匹配一行的末尾,如果是多行,则没法进行匹配。但可以进行专门指定匹配多行

print(re.match('.*ac$','adsfac\ndfac',re.M))
# <_sre.SRE_Match object; span=(0, 6), match='adsfac'>,这种情况相当于没有指定多行的情况下直接匹配'adsfac'

1.2.4 “*”

“*” 重复匹配零次或者更多次(贪婪模式).

贪婪模式:尽可能多的匹配遇到的重复。

print(re.match('.*ac$','adsfac\ndfac',re.M))
# <_sre.SRE_Match object; span=(0, 6), match='adsfac'>,这种情况相当于没有指定多行的情况下直接匹配'adsfac'
#示例如下:
#匹配一个以a开始,以b结束的字符串
print(re.match('a.*b','aaaadbdgdbddf546b'))
#<_sre.SRE_Match object; span=(0, 17), match='aaaadbdgdbddf546b'>
 
#限制贪婪模式
print(re.match('a.*?b','aaaadbdgdbddf546b'))
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值