正则表达式——re库的一些常用函数

简介: 正则表达式——re库的一些常用函数

前言

Re库是Python的标准库,主要用于字符串匹配,调用方式:import re


一、正则表达式的常用操作符

.  表示任何单个字符
[]  字符集,[abc],[a-z]这种形式
[^ ]  非字符集,对单个字符给出排除范围,[^abc]表示非a或b或c的单个字符。
*  前一个字符0次或者是无限次扩展
?  前一个字符0次或者是1次扩展
|  左右表达式任意一个
{m}  扩展前一个字符m次
{m, n}  扩展前一个字符m到n次
^  匹配字符串的开头
$  匹配字符串的结尾
\d  数字,等价于[0-9]
\w  单词字符,等价于[A-Za-z0-9_]

二、主要函数介绍以及使用


如果想要了解Match对象的相关属性可以先看三

Re库默认采用贪婪匹配,即输出匹配最长的子串


2-1、re.search()


# define: 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
# form: re.search(pattern, string, flags=0)
# pattern: 正则表达式的字符串或原生字符串表示 
# string: 待匹配的字符串
# flags: 正则表达式使用时的控制标记 
# 参数同上
# eg
>>>import re
>>>re.search(r'[1-9]\d{5}', 'BIT 100081')
>>>if match:
>>>   match.group(0)
>10081

2-2、re.match()

# define: 从一个字符串的开始位置起匹配正则表达式,返回match对象
# notice:如果开始没有匹配到,不管后边有没有能符合匹配的,都打印不出结果,这是和search的区别。
# 参数同上
# form: 
>>>import re
>>>re.match(r'[1-9]\d{5}', 'BIT 100081')
>>>if match:
>>>   match.group(0)
>报错

2-3、re.findall()

# define:搜索字符串,以列表类型返回全部能匹配的子串
# 参数同上
# form: 
>>>import re
>>>al = re.findall(r'[1-9]\d{5}', 'BIT 100081 AS100083')
>>>al
>['100081', '100083']

2-4、re.split()

# define:将一个字符串按照正则表达式匹配结果进行分隔,返回列表类型
# 除了上边的参数,maxsplit:最大分隔数,剩余部分作为最后一个元素输出
# form:
>>>import re
>>>al = re.split(r'[1-9]\d{5}', 'BIT 100081 AS100083')
>['Bit', ' TSU', '']

2-5、re.finditer()

# define:搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
# 类似于fianall,只不过返回的是迭代对象
# form: 
>>>import re
>>>for m in re.finditer(r'[1-9]\d{5}', 'BIT 100081 AS100083')
>>>   if m:
>>>     print(m.group(0))
>100081
>100083

2-6、re.sub()

# define:在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。
# form: re.sub(pattern, repl, string, count=0, flags=0)
# pattern: 正则表达式的字符串或原生字符串表示 
# repl: 把匹配到的字符串替换成什么
# string: 待匹配的字符串
# flags: 正则表达式使用时的控制标记 
# form: 
>>>import re
>>>re,sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
>'BIT:zipcode TSU:zipcode'
# 删除所有的表情字符
>>> re.sub('[^\u4e00-\u9fa5^]', '')

2-7、另一种用法

# re.compile: 将正则表达式的字符串形式编译成正则表达式对象
re.search(r'[1-9]\d{5}', 'BIT 100081')
等价于
pat = re.compile(r'[1-9]\d{5}')
pat.search('Bit 100081')


三、Match对象的相关属性

属性
# string: 待匹配的文本
# re: 匹配时使用的正则表达式
# pos: 正则表达式搜索文本的开始位置
# endpos: 正则表达式搜索文本的结束位置
# group(0): 获得匹配后的字符串
# start(): 匹配字符串在原始字符串的开始位置
# end(): 匹配字符串在原始字符串的结束位置
# span(): 返回start(), end()
>>>import re
>>>m = re.search(r'[1-9]\d{5}', 'BIT 100081')
>>>m.string
>'BIT 100081'
>>>m.re
>re.compile('[1-9]\\d{5}')
>>>m.pos
>0
>>>m.endpos
>19
>>>m.group(0)
>'100081'
>>>m.start()
>3
>>>m.end()
>9
>>>m.span()
>(3, 9)


四、注意事项

1 re库采用raw string类型(原生字符串类型,不需要对转义符再次转移)。 即r'text'
2 re库若采用string类型表示正则表达式,则需要转义。


五、实例

5-1、以某字符开头以某字符结尾(截取字符串中的)


# 截取以k开头以d结尾的字符串。
re.search('k.*?d', str)


参考文章:

python re库入门(正则表达式).


总结

相关文章
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r'string'`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
|
8月前
|
Python Windows
【Python进阶必备】一文掌握re库:实战正则表达式
【Python进阶必备】一文掌握re库:实战正则表达式
186 0
|
2月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
78 5
|
5月前
|
Python
告别死记硬背:掌握Python正则表达式re模块的高效应用&[面向百度编程]
Python中正则表达式的高效应用,通过内置的`re`模块,讲解了如何匹配、提取和替换字符串,并提供了相关示例代码,同时提倡通过实践来掌握正则表达式的使用,而不是仅仅依赖网络搜索。
59 1
|
5月前
|
SQL 分布式计算 算法
【python】python指南(三):使用正则表达式re提取文本中的http链接
【python】python指南(三):使用正则表达式re提取文本中的http链接
59 0
|
6月前
|
存储 C++ 容器
C++一分钟之-正则表达式库(regex)
【7月更文挑战第7天】C++从C++11开始支持正则表达式,通过`<regex>`库提供功能。本文涵盖基本概念如`std::regex`、`std::smatch`,以及`regex_search`和`regex_match`的使用。常见问题包括大小写敏感性、特殊字符转义、贪婪与非贪婪匹配和捕获组。提供的代码示例展示了如何进行匹配、不区分大小写的匹配、特殊字符匹配、贪婪与非贪婪匹配和捕获组的使用。理解并练习正则表达式能提升文本处理效率。
156 0
|
7月前
|
Python
Python中re模块的正则表达式
【6月更文挑战第2天】了解Python的re模块,它是处理正则表达式的核心工具。正则表达式用于在文本中查找特定模式。本文讨论了re模块的用法和技巧,包括导入模块、匹配、分组、替换文本、编译正则表达式以及使用预定义字符类、量词、锚点等高级功能。通过实例展示了如何在Python中执行这些操作,帮助提升文本处理能力。掌握这些技巧将使你更有效地利用正则表达式解决字符串处理问题。
75 2
|
7月前
|
Python
python re 正则表达式库的使用
python re 正则表达式库的使用
56 0
|
8月前
|
Python
Python中的`re`模块:深入探索正则表达式的处理
正则表达式(Regular Expression,简称regex或regexp)是一种强大的文本处理工具,能够用来匹配、查找和替换复杂的文本模式。Python的`re`模块提供了正则表达式的相关功能,使得在Python中处理正则表达式变得非常简单和直观。
|
8月前
|
存储 JavaScript API
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
C++ 正则表达式库 std::basic_regex 中文手册(API说明来自cppreference.com)
188 0