Python正则表达式re模块

本文介绍了正则表达式的基础知识,包括元字符的功能与用法,以及Python中re模块的主要函数,如compile、match等。
正则表达式

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

元字符

正则表达式的元字符包括:
. 表示任意字符
^ 1.表示取非的意思;2.匹配输入字符串的开始位置
$ 匹配输入字符串的结尾位置
* 匹配前面的子表达式零次或多次
+ 对于前一个字符重复1到无穷次
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
{m,n} 对于前一个字符重复次数在为m到n次,其中,{0,} = *,{1,} = , {0,1} = ?
{m} 对于前一个字符重复m次
{ 标记限定符表达式的开始
[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系
| 表示”或”,如A|B,其中A,B为正则表达式,表示匹配A或者B
() 标记一个子表达式的开始和结束位置

\b 匹配单词的结束或者结尾
\B 匹配不是单词的结束或者结尾
\d 匹配任何十进制数;它相当于类 [0-9]
\D 匹配任何非数字字符;它相当于类 [^0-9]
\s 匹配任何空白字符;它相当于类 [ fv]
\S 匹配任何非空白字符;它相当于类 [^ fv]
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]

[^a] 匹配除了a以外的任意字符
[^abcde]匹配除了a,b,c,d,e这几个字母以外的任意字符
[^(123|abc)] 匹配除了a,b,c或1,2,3这几个字符以外的任意字符

re模块

Python通过re模块提供对正则表达式的支持,使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果,最后使用Match实例获得信息,进行其他操作。
主要函数如下:

  • re.compile(string,flags)

    把正则表达式的字符串化为Pattern匹配对象

  • re.match(pattern,string,flags)
    尝试使用带有可选的标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回匹配对象; 如果失败,就返回 None

  • re.search(pattern,string,flags)
    使用可选标记搜索字符串中第一次出现的正则表达式模式。 如果匹配成功,则返回匹配对象; 如果失败,则返回 None
  • re.spilt(pattern,string , max)

    根据正则表达式的模式分隔符, split函数将字符串分割为列表,然后返回成功匹配的列表,分隔最多操作 max 次(默认分割所有匹配成功的位置)

  • re.findall(pattern,string,flags)

    查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表

  • re.finditer(pattern,string,flags)

    与 findall()函数相同,但返回的不是一个列表,而是一个迭代器。 对于每一次匹配,迭代器都返回一个匹配对象

  • re.sub(pattern,repl , string, count)

    使用 repl 替换所有正则表达式的模式在字符串中出现的位置,除非定义 count, 否则就将替换所有出现的位置( 另见 subn()函数,该函数返回替换操作的数目)

  • re.subn(pattern,repl , string, count)

    返回(re.sub(pattern,repl , string, count),替换次数)

我们来看一下re中的compile函数:该函数将正则表达式的字符串化为Pattern匹配对象。
比如:

pattern = re.compile(r'\d+')

这会生成一个仅匹配数字的pattern对象,用来给接下来的函数作为参数,进行进一步的搜索操作。

大家在上面函数中可能注意到有一个flags参数,这个参数代表匹配模式,取值时可以使用“|”来表示两个条件同时生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值