Re——正则表达式_方法(method)

方法(method):

1、 re.compile(pattern, flags=0)
—> 将一个正则表达式模式编译成一个正则表达式对象,该对象可以使用下面描述的match()和search()方法进行匹配。

eg: >>> r = re.compile('\d+',re.A)

2、re.match(pattern, str, flag=0)
—> 搜索str开头是否满足pattern,满足则返回信息,不满足则返回NoneType。
/* 注: 注意,即使在多行模式下,re.match()也只匹配字符串的开头,而不匹配每行的开头。

eg: >>> r = re.match('\d+', '123', re.DEBUG)
	MAX_REPEAT 1 MAXREPEAT
	  IN
		CATEGORY CATEGORY_DIGIT
	>>> r.group()
	'123'

3、 re.search(pattern, str, flag=0)
—> 在全局里搜索满足pattern的str的子字符串,有则返回第一个满足的子字符串的信息,没有则返回NoneType

eg: >>> r = re.search('\d','a1b2c3')
	>>> r.group()
	'1'

4、re.fullmatch(pattern, str, flag=0)
—> 如果整个字符串匹配正则表达式模式,则返回相应的match对象。如果字符串与模式不匹配,则返回None。
/* 注: 这与零长度匹配不同。

eg: >>> r = re.fullmatch('\d+','123w')
	>>> type(r)
	<class 'NoneType'>
	>>> r = re.fullmatch('\d+', '123')
	>>> r.group()
	'123'

5、 re.split(pattern, string, maxsplit=0, flag=0)
—> 通过模式的出现来分割字符串。如果模式中使用了捕捉括号,那么模式中所有组的文本也将作为结果列表的一部分返回。如果maxsplit是非零的,则最多执行maxsplit拆分,并将字符串的其余部分作为列表的最后一个元素返回。

eg: >>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
	['0', '3', '9']

/* 注: 如果分隔符中有捕获的组,并且它在字符串的开头匹配,那么结果将以空字符串开始。同样的道理也适用于字符串的结尾。

eg: >>> re.split('(\W+)', '...words, words...')
	['', '...', 'words', ', ', 'words', '...', '']

6、re.findall(pattern, str, flag=0)
—> 返回字符串中模式的所有非重叠匹配,作为字符串列表。从左到右扫描字符串,并按照找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。

eg: >>> re.findall('\d+','123asd456asd789')
	['123', '456', '789']
	>>> re.findall('\d*','123asd456asd789')
	['123', '', '', '', '456', '', '', '', '789', '']

/* 注: 第二式子是因为’*‘表示匹配[0, +∞),所以在匹配到’a’的时候,就匹配0所以为空’’。


7、re.finditer(pattern, string, flags=0)
—> 返回一个迭代器,为字符串中的RE模式在所有非重叠匹配上生成匹配对象。效果跟findall差不多,只不过这个返回的是包含多个match的迭代器。

eg: >>> for each in re.finditer('\d+','123asd456asd789'):
			print(each.group())
	123
	456
	789

8、 re.sub(pattern, repl, string, count=0, flags=0)
—> 取用pattern从前到后匹配string,如果匹配到,则用repl去替换匹配到的string的子字符串,重复直到string的最后一个字符。

eg:	>>> re.sub(r'\d*','5','123abc')
	'5a5b5c5'
	>>> re.sub(r'\d+','5','123abc')
	'5abc'
	>>> re.sub(r'\d*','5','123abc',2)
	'5a5bc'

/* 注: 类似findall那里的注释,’*‘匹配[0,+∞),所以会产生一个空字符,然后空字符又会被repl替代,所以上述第一个式子是’5a5b5c5’。
/* 注: repl可以为函数

eg: >>> def dashrepl(matchobj):
			if matchobj.group(0) == '-': return ' '
			else: return '-'
	>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
	'pro--gram files'

9、 re.subn(pattern, repl, string, count=0, flags=0)
—> 与re.sub相类似,只是返回的对象为tuple (new_string, number_of_subs_made).。

eg: >>> re.subn(r'\d*','5','123abc')
	('5a5b5c5', 4)

10、re.escape(string)
—> 转义除ASCII字母、数字和“_”外的所有模式字符。如果您想要匹配一个可能包含正则表达式元字符的任意文字字符串,这是非常有用的。

eg: >>> re.escape('www.python.org')
	'www\\.python\\.org'
	>>> re.findall(re.escape('w.py'),"jw.pyji w.py.f")
	['w.py', 'w.py']

11、 re.purge()
—> 清除正则表达式的缓存。


————2020年4月12日 XXX

posted @ 2020-04-12 22:21  souldom  阅读(264)  评论(0编辑  收藏  举报