python中的非法表达式_Python中的正则表达式

本文详细介绍了Python中正则表达式的使用,包括匹配单个字符、多个字符的规则,以及分组、边界和贪婪与非贪婪匹配的概念。通过实例解析了re模块的match、search、findall和sub等方法,并强调了在Python中如何实现非贪婪匹配。学习正则表达式对于Python开发者来说至关重要,尤其在处理字符串和数据提取方面。
摘要由CSDN通过智能技术生成

正则表达式是一种在一段文本中提取我们我们感兴趣的一小段字符串的技术。在Python中,正则表达式有很多地方都能用到,比如Flask、Django框架中配置路由、爬虫等地方。因此学会使用正则表达式式非常有必要的,那么接下来我们就开始学习正则表达式了。

一、如何使用re模块

Python中使用re模块来进行正则匹配。封装了许多语法糖。

在写匹配规则的时候,最好以r""开头,这样可以把"\"字符做转义。

1、匹配单个字符

".":匹配任意1个字符,除了"\n"以外

"[ ]":匹配"[ ]"中列举的字符

"\d":匹配数字,即从0-9,相当于[0-9]

"\D":与"\d"相反,匹配非数字,相当于[^0-9]

"\s":匹配空白字符,即空格、tab键,相当于[ |\t]

"\S":与"\s"相反,匹配非空白

"\w":匹配单词字符,即a-z、A-Z、0-9、_,相当于[a-zA-Z0-9_]

"\W":匹配非单词字符

2、匹配多个字符

{m}:匹配前一个字符出现m次

{m, n}:匹配前一个字符出现从m到n次

"*":匹配前一个字符出现0次或无限次,即可有可无,相当于{0, }

"+":匹配前一个字符出现1次或无限次,必须有一次,相当于{1, }

"?":匹配前一个字符出现1次或0次,要么有1次,要么没有,相当于:{0, 1}

3、表示边界

"^":匹配字符串的开头,注意^用于"[]"中表示取反的作用

"$":匹配字符串的结尾,

"\b":匹配一个单词的边界

"\B":匹配非单词边界

4、匹配分组

"|":匹配左右任意一个表达式

"(ab)":将括号中的字符作为一个分组

"\num":引用分组num匹配到的字符,匿名分组

(?P):分组起别名,有名分组

(?P=name):引用别名为name分组匹配到的字符串

二、re中重要的方法

1.match(pattern, content):从头开始匹配,如果第一个字符不符合规则,那就返回。如果匹配成功,返回一个Match对象,有group()方法。

2.search(pattern, content):和match差不多,只是,如果第一个字符不符合规则的话,还需继续往下匹配,直到结束。

3.findall(pattern, content):从头匹配到尾,匹配成功的话,返回匹配的字符串组成的列表,否则返回空列表。

4.sub(pattern, new_str/fun, content):匹配并替换,第二个参数可以是函数,把从content匹配到的字符,当做函数的参数进行处理

5.split(pattern, content):根据匹配规则进行分割字符串,然后范湖一个列表

三、Python中的贪婪与非贪婪

在Python中,数量词(匹配多个字符的规则)默认是贪婪的,即总是匹配尽可能多的字符;而非贪婪则相反,总是尽量匹配少的字符。

在"*"、"?"、"+"、{m, n}等后面加上"?"可以使贪婪变为非贪婪。

注意,非贪婪是在满足匹配结果之后,从结果中进行匹配尽量少的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值