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']

 

posted @ 2017-06-26 16:12  丶陌潇  阅读(161)  评论(0编辑  收藏  举报