正则笔记-元字符(1)

正则表达式概念

正则表达式,或者叫规则表达式,全称Regular Expression,在代码中常简写为regex、regexp或RE.

python中正则和其他语言中一样,本质上是对re语言的封装模块进行调用

元字符

元字符有以下:

. ^ $ * + ? { } [ ] | ( ) \

通配符.

.代指任意一个字符,除了\n换行符

import re
>>> strs = 'helloworld'
>>> re.findall('h...o',strs)  # 用了3个. 成功
['hello']
>>> re.findall('h..o',strs)  # 用2个.  则失败,说明1个点只能指代1个字符
[]

尖角符/乘方符/插入符 ^

^指从第一个字符匹配

>>> re.findall('^h...o',strs)  # h为第一个字符开始匹配,成功匹配
['hello']
>>>  re.finall('^e..o',strs)  # 从e开始匹配,则失败
[]

美元符/dollar符 $

$指从最后一个字符匹配

>>> re.findall('w...d$',strs)  # d最后一个字符,成功匹配
['world']
>>> re.finall('w..l$',strs)  # l不是最后一个字符,匹配到l,则失败
[]

星号 *

$从0个至无穷个字符匹配

>>> strs = 'hello'
>>> re.findall('he..o',strs)  #  用.时,匹配几个l就需要用几个点
['hello']
>>> strs = 'ellllllo'
>>> re.findall('e......o',strs) # 6个l需要6个点,多个字符时不够方便
['ellllllo']
>>> re.findall('e.*o',strs) # 此时可以用*替代.来匹配后面的多个字符
['ellllllo']
>>> re.findall('e.*',strs)  # e.*表达了e后面字符的0到无穷个
['ellllllo']
>>> re.findall('el*',strs)  # l* 匹配了所有l
['ellllll']
>>> re.findall('e*',strs)  # e* 后面没有其他e,即是0个,则*会匹配为空,e后有7个字符,则有8个空
['e', '', '', '', '', '', '', '', '']
>>> re.findall('l*o',strs) # 匹配了o前面所有的l
['llllllo']

加号 +

$至少1个至无穷个字符匹配

>>> strs = 'elllllolo'
>>> re.findall('l+o',strs)  # 出现了2种结果,1个指代了1个l,1个指代了5个l
['lllllo', 'lo']
>>> re.findall('lo+',strs)  # 此时匹配为l后1个字符o,则结果为lo
['lo', 'lo']

问号 ?

$ 只有0个到1个字符匹配

>>> strs = 'lllllo'
>>> re.findall('l?',strs)  # 只匹配0到1个l,第一个o时不匹配,则为空值0,整体不匹配为1个空值0
['l', 'l','l', 'l', 'l', '', '']

花括号{}

{}重复匹配

>>> strs = 'llllllo'
>>> re.findall('l{6}') #l匹配重复6次
['lllll']
>>> re.findall('l{3}') # l重复匹配3次
['lll','lll']
>>> re.findall('l{7}') # strs字符串中6个l,匹配重复7次l时则没有匹配的项
[]

小结:
*等价于{0, ∞}
+等价于{1,∞}
?等价于{0, 1 }
{n}为重复次数匹配
.匹配除\n换行符外所有字符
^从开始匹配
$匹配到结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值