首页 > 代码库 > 25、正则表达式

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(rI\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(rc\\l,abc\le)
print(ret)#[]


# \b是特殊符号所以,‘abc\be‘前面需要加r
ret=re.findall(rc\\b,rabc\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‘]

 

25、正则表达式