常用模块 re模块与正则表达式

时间:2021-05-25 22:35:33

re模块

正则:

正则就是用一些具有特殊含义的符号组合到一起(称之为正则表达式)来描述字符或字符串的方法。或者说:正则就是用描述一类事物的规则。(在python中) 它内嵌在python中,并通过re模块来实现。正则表达式模式被编译成一系列的字节码,然后用C编写的匹配引擎执行。

二、常用匹配模式(元字符)

要先导入re模块,配合正则表达式:、

import re

\w:匹配字母数字及下划线
print(re.findall('\w','ajllhs_127sji%&^h_9'))
#打印结果:
['a', 'j', 'l', 'l', 'h', 's', '_', '1', '2', '7', 's', 'j', 'i', 'h', '_', '9']

\W :匹配非字母数字下划线
print(re.findall('\W','shuk*&%^-_=|sjf98'))
#打印结果
['*', '&', '%', '^', '-', '=', '|']

\s:匹配任意空白字符,等价于[\t\n\f\r]
print(re.findall('\s',' \n6si(*-=\rj8hs*%#\t'))
#打印结果
[' ', '\n', '\r', '\t']


\S 匹配任意非空白字符
print(re.findall('\S',' r\r4$^*(\njsh\t@!'))
#打印结果
['r', '4', '$', '^', '*', '(', 'j', 's', 'h', '@', '!']


\d匹配任意数字等价于[0-9]
print(re.findall('\d','js&*\r89$46#0\'/j'))
#打印结果
['8', '9', '4', '6', '0']


\D匹配任意非数字
print(re.findall('\D','js&*\r89$46#0\'/j'))
#打印结果
['j', 's', '&', '*', '\r', '$', '#', "'", '/', 'j']


\A 匹配字符串的开始
print(re.findall('\Aada','123ada sijhada'))
#打印结果:[]   以ada为字符串的开始, 没有则给出一个空列表
print(re.findall('\Aada','ada12ada sijhada'))
#打印结果 ['ada'] 只提取开头的 ada,之后再有的都不会提取,因为后面的都不是以ada开头了。

一般\A不用, 而用^来代替
print(re.findall('^ada','123ada sijhada'))
#打印结果:[]   以ada为字符串的开始, 没有则给出一个空列表, 效果等同于print(re.findall('\Aada','123ada sijhada'))


\Z 匹配字符串结束,如果存在换行,只匹配到换行钱结束的字符串
print(re.findall('nb\Z','adaxjshi&*)12sbw('))
打印结果为 [ ]  因为不是以nb结尾的字符串

 print(re.findall('nb\Z','adaxjshi&*)12nbnbnb'))
#打印结果为 ['nb']  是以nb结尾的,且不关里面有多少个nb  只取结尾的那个nb


\Z一般也不用而是用$来代替用法同\Z 一米一样
print(re.findall('nb$','adaxjshinbnbnb'))
#打印结果 ['nb']

\n  匹配换行符
print(re.findall('\n','sh\n268*&()kl\n'))
#打印结果 ['\n', '\n']

\t 匹配制表符
print(re.findall('\t','sh\t268*&()kl\t'))
#打印结果 ['\t', '\t']


. 匹配任意一个字符 ,除了换行符。当re.DOTALL标记被指定时, 则可以匹配包括换行符的任意字符
print(re.findall('a.b','anxb jianbkh ahba\rb a\nb'))
#打印结果['anb', 'ahb', 'a\rb']  第一个anxb 不能匹配因为中间有两个字符,.只能匹配一个, 后面的a\nb 也不能匹配,\n 是换行符。
print(re.findall('a.b','anxb jianbkh ahba\rb a\nb',))
#打印结果['anb', 'ahb', 'a\rb', 'a\nb']

 

import re


[...]代表用来表示  一组字符串找那个单独列出
print(re.findall('a...c','amkbcsc abbyc'))
#打印结果  # 打印结果 ['a', 'c', 'c', 'a', 'c'] 单独列出a c 

[^...] 代表用来表示 不在[] 中的字符
print(re.findall('[^bcd]','abcdsad, sjdmhsmzsc'))
# 打印结果:['a', 's', 'a', ',', ' ', 's', 'j', 'm', 'h', 's', 'm', 'z', 's']