python-17 正则

需要导入re模块
import re

import re

res = re.match('张', '张张三') # 匹配张
print(res.group())
res2 = re.match('..', 'hello') # 匹配任意两个字符
print(res2.group())
----------------
张
he

match 是从开头进行匹配的,匹配的是表达式整体,返回一个match对象,需要用group()方法提取返回匹配到的对象

search()

扫描整个字符串并返回第一个匹配成功的对象 如果匹配失败返回None

res = re.search(r'\d', 'ann21mm')  # 匹配一个数字
print(res.group())
-------------------
2

findall()

从头到尾匹配 找到所有匹配成功的数据返回一个列表

res = re.findall(r'\d', 'ann21mm')
print(res)  # 不需要group()
--------------------
['2', '1']

sub()

sub(pattern, repl, string, count)

pattern 正则表达式(代表需要被替换的,也就是字符串里面的旧内容 )
repl 新内容
string 字符串
count 指定替换次数

res = re.sub(r'\d', 'ww', 'aa2aa3aa4', count=2) # 将数字转换成ww,转换两次
print(res)
---------------------------------------
aawwaawwaa4

split()

split(pattern, string, maxsplit)

pattern 正则表达式(代表需要被替换的,也就是字符串里面的旧内容 )
string 字符串
maxsplit 指定最大分割次数

res = re.split(r'\d', 'aa2aa3aa4', maxsplit=2)  以数字为分割 分割两次
print(res)
------------------------------
['aa', 'aa', 'aa4']

贪婪与非贪婪匹配

默认情况下是贪婪匹配:在满足匹配时,匹配尽可能长的字符串

res = re.match('em*', 'emmmmmmmmmm')
print(res.group())
--------------------------
emmmmmmmmmm

非贪婪匹配:在满足匹配时,匹配尽可能短的字符串 用?来表示非贪婪匹配

res = re.match('em*?', 'emmmmmmmmmm')
print(res.group())
res2 = re.match('em+?', 'emmmmmmmmmm')
print(res2.group())
--------------------
e
em
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容