python 正则
1、pattern对象的方法
(1)match方法:默认从头开始匹配,只匹配一次,返回一个match对象
Match对象 = pattern.match(
string,#要匹配的目标字符串
start,#要匹配目标字符串的起始位置(可选)
end#结束位置(可选)
)
(2)search 方法:全文匹配,只匹配一次,返回一个match对象
Match = pattern.search(
string,#要匹配的目标字符串
start,#要匹配目标字符串的起始位置(可选)
end#结束位置(可选)
)
(3)findall方法:全文匹配,匹配多次,返回一个list
list= pattern.findall(
string,#要匹配的目标字符串
start,#要匹配目标字符串的起始位置(可选)
end#结束位置(可选)
)
(4)finditer方法:全文匹配,匹配多次,返回一个迭代器,迭代器里面存储的是match对象
迭代器= pattern.findall(
string,#要匹配的目标字符串
start,#要匹配目标字符串的起始位置(可选)
end#结束位置(可选)
)
什么是迭代器?
当有一种数据或者内容比较多的时候,可以将其分装迭代器。—通过for循环来使用这个迭代器就可以获取其中的每一个数据。
有__next__和__iter__。
可迭代对象?有__iter__方法对象。
str
bytes
list
dict
tuple
文件流
需求:打印输入文件内容,同时输出行号。
(5)split:安正则方法表示内容进行分割字符串,返回分割后子串list
Pattern.split(
String,
Maxsplit#指定最大分隔次数,默认全部分隔,可选
)
http://www.baidu.com:8080/index.html
(6)sub:按照正则表示的内容替换字符串(重要的)
Pattern.sub(
repl, #替换成什么
String,#替换什么
Count#替换次数,可选,默认全部替换
)--->替换后的字符串
(1)repl字符串
import re
p = re.compile(r'(\w+) (\w+)')
s = 'hello 123,hello 456'
#提前用p去匹配目标串,找到能匹配出来的内容,就是替换找出来的这个内容的。
print(p.sub(r'hello world',s))#使用‘hello world'替换'hello 123'和'hello 456'
print(p.sub(r'\2 \1',s))#引用分组
(2)当repl是一个函数的时候,这个函数是有要求的:
a、必须带一个参数,这个参数其实就是提前用p去匹配目标串,得到match对象。
b、这个函数必须有返回值,返回值是一个字符串,这个字符串将来就作为替换的内容。
2、分组
分组在正则表达式中就是用()来表示的。一个括号就是一个分组。分组的作用主要有以下两个:
(1)筛选特定内容
(2)引用分组
3、贪婪非贪婪模式
(1)贪婪是用*来控制,python默认是贪婪模式,所以默认所有的数量控制符都是取所能匹配的最大值。
(2)非贪婪是用?来控制的,?放在数量控制符后面,表示数量控制符匹配最小的次数。
来源:CSDN
作者:@~满天星 ^O^☜
链接:https://blog.csdn.net/weixin_44120218/article/details/104302015