25、正则表达式
一 正则表达式
1 功能:字符串的模糊匹配查询
"hello".find("yuan\n egon\nalex")
2 元字符
re.findall('查找对象','内容')----匹配出所有条件的元素
元字符包括:. ^ $ * + ? { } [ ] | ( ) \
. :除换行符以外的任意“一个”符号
ret=re.findall("李.","李杰,李刚,王超,占山") print(ret)
^ :只匹配字符串开始的位置
import re ret=re.findall("^李.","yuan李杰,李刚,王超,占山,李莲英") print(ret)
$ :只匹配字符串最后一个(末尾)位置
import re ret=re.findall("y..n$","yabn李杰,李刚,王超,占山,李莲英") print(ret)
重复元字符
* :(0,无穷)
import re ret=re.findall("131\d*","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234") print(ret)
+ :(1,无穷)
import re ret=re.findall("131\d+","1312312321,412341,131,32424,131234213423,123415234123324111,123412341234,12341234") print(ret)
? :(0,1)
import re ret=re.findall("-?\d+","131,41,-11,12,-4") print(ret)
{} :指定次数
import re ret=re.findall("\d{18}","12312321,412341,32424,1234213423,123415234123324111,123412341234,12341234") print(ret)
二 转义符
1 反斜杠后边跟元字符去除特殊功能,比如\
2、反斜杠后边跟普通字符实现特殊功能,比如\d
\d 匹配任何十进制数; 它相当于类 [0-9]。 \D 匹配任何非数字字符; 它相当于类 [^0-9]。 \s 匹配任何空白字符; 它相当于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符; 它相当于类 [^ \t\n\r\f\v]。 \w 匹配任何字母数字字符; 它相当于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符; 它相当于类 [^a-zA-Z0-9_] \b 匹配一个特殊字符边界,比如空格 ,&,#等
让我们看一下\b的应用:
ret=re.findall(r'I\b','I am LIST') print(ret)#['I']
接下来我们试着匹配下“abc\le”中的‘c\l’:
import re ret=re.findall('c\l','abc\le') print(ret)#[] ret=re.findall('c\\l','abc\le') print(ret)#[] ret=re.findall('c\\\\l','abc\le') print(ret)#[] ret=re.findall(r'c\\l','abc\le') print(ret)#[] # \b是特殊符号所以,'abc\be'前面需要加r ret=re.findall(r'c\\b',r'abc\be') print(ret)#[]
分组()
m = re.findall(r'(ad)+', 'add') print(m) ret=re.search('(?P<id>\d{2})/(?P<name>\w{3})','23/com') print(ret.group())#23/com print(ret.group('id'))#23
元字符 |
ret=re.search('(ab)|\d','rabhdg8sd') print(ret.group())#ab
字符集【】
#--------------------------------------------字符集[] ret=re.findall('a[bc]d','acd') print(ret)#['acd'] ret=re.findall('[a-z]','acd') print(ret)#['a', 'c', 'd'] ret=re.findall('[.*+]','a.cd+') print(ret)#['.', '+'] #在字符集里有功能的符号: - ^ \ ret=re.findall('[1-9]','45dha3') print(ret)#['4', '5', '3'] ret=re.findall('[^ab]','45bdha3') print(ret)#['4', '5', 'd', 'h', '3'] ret=re.findall('[\d]','45bdha3') print(ret)#['4', '5', '3']