python 正则

放肆的年华 提交于 2020-02-14 01:49:22

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)非贪婪是用?来控制的,?放在数量控制符后面,表示数量控制符匹配最小的次数。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!