关于Python中正则表达式的用法

本文介绍了Python中正则表达式的用法,包括正则表达式的语法、特殊字符、预定义字符和量词,以及如何使用re模块进行匹配、分割和提取子串等操作。正则表达式是处理字符串的强大工具,掌握其用法能有效提升字符串处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Python中正则表达式的用法

在我们写程序的过程中经常会遇到处理字符串的情况,大致分为以下几种场景:

  1. 匹配一个字符串是否符合给定的标准
  2. 从字符串中找到符合要求的文本
  3. 替换字符串中的某些文本
  4. 对字符串进行分割以分别处理

而正则表达式是用于处理字符串的强大工具,掌握正则表达式有利于更好地处理字符串,提高效率

正则表达式的语法

特殊字符

字符描述举例匹配的表达式
\转义符\n表示换行符
\n匹配一个换行符
\t匹配一个制表符
^匹配字符串的开头^abcabc
$匹配字符串的末尾abc$abc
.匹配除换行符外的任意字符ab.abc \ ab1
[...]用来表示一组字符[0-9]匹配一个数字
[^...]不在 [] 中的字符[^0-9]匹配非数字
|匹配或a|b匹配a或者b
( )匹配括号内的表达式,表示分组a(12|34)ba12b

预定义字符

字符描述举例匹配的表达式
\w匹配字母数字及下划线\wbcabc
\W匹配非字母数字及下划线\Wbc1bc
\s匹配任意空白字符,包括空格和Tab等a\sba b
\S匹配任意非空白字符a\Sba1b
\d匹配任意数字,等价于 [0-9]00\d001
\D匹配任意非数字00\D00a

量词

字符描述举例匹配的表达式
*匹配 0 个或多个的表达式ab*a \ abbb
+匹配 1 个或多个的表达式ab+ab \ abbb
?匹配 0 个或 1 个由前面的正则表达式定义的片段,非贪婪方式ab?a \ ab
{n}精确匹配 n 个前面表达式ab{2}abb
{n, m}匹配 n 到 m 个由前面的正则表达式定义的片段,贪婪方式ab{1,2}ab \ abb

re模块

Python通过re模块提供对正则表达式的支持。由于Python的字符串本身也用\转义,所以当一个字符串包含大量转义字符时,就需要写出很多个\,比较麻烦,Python里的原生字符串很好地解决了这个问题,使用Python的r' '前缀,就不用考虑转义的问题了。

re.match(r'正则表达式', str)

match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

re.split(r'切分的字符', str)

split()方法用来切分字符串,返回一个list对象

如果正则表达式中定义了组,就可以在Match对象上用group()方法提取出子串,且group(0)是原始字符串,group(i)表示第i个子串。

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
m.group(0)		#'010-12345'
m.group(1)		#'010'
m.group(2)		#'12345'

常用正则表达式

1、匹配email地址:

[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

2、匹配网址URL:

[a-zA-z]+://[^\s]*

3、匹配18位身份证号:

^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$

4、匹配年月日格式:

([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))

5、匹配整数:

^-?[1-9]\d*$

6、匹配正整数:

^[1-9]\d*$

7、匹配负整数:

^-[1-9]\d*$

8、匹配空白行:

\n\s*\r

正则表达式非常强大,内容也非常多,需要经常性的学习和实践,温故而知新。

Python中,可以使用正则表达式模块re来进行正则表达式的操作。首先需要导入re模块,使用import re。然后可以使用re模块提供的各种函数进行正则表达式的匹配、查找、提取和替换等操作。其中,常用的函数包括findall、search、match和sub等。 - findall函数可以用于查找字符串中所有匹配正则表达式的子串,并以列表的形式返回所有匹配的结果。 - search函数可以在整个字符串中搜索匹配正则表达式的第一个子串,并返回一个匹配对象。如果找到匹配的子串,则可以通过匹配对象的group方法得到匹配的结果。 - match函数可以在字符串的开头匹配正则表达式,并返回一个匹配对象。如果在开头找到匹配的子串,则可以通过匹配对象的group方法得到匹配的结果。 - sub函数可以用于替换字符串中匹配正则表达式的子串。 使用正则表达式时,还可以使用一些基础的符号来表示规则,比如“.*”表示匹配任意字符任意次数,“.*?”表示非贪婪匹配。这些符号可以用于更灵活地匹配和提取字符串中的信息。 总结起来,Python中的正则表达式用法包括导入re模块、使用findall、search、match和sub等函数来进行匹配、查找、提取和替换等操作,并可以使用一些基础的符号来表示匹配规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Python正则表达式的使用](https://blog.youkuaiyun.com/heiren_a/article/details/123174223)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值