正则表达式

匹配到你想要的

 

import re

#以findall为例

print(re.findall())#findall的括号里分为两部分,第一部分是你需要什么,即正则表达式,如print(re.findall('\w','12321323123'))

12321323123则为你要匹配的字符串

常用的表达式有

\w#匹配字母数字下划线

\W#匹配非字母数字下划线

\s#匹配任意空白字符

\S#匹配任意非空字符

\d#匹配任意数字[0-9]

\D#匹配任意非数字

\A#匹配字符串开始

\Z#匹配字符串结束

^从头开始找 findall('^e','e123')结果为e,只能找到一个e

$从结尾找 a$findall('&3','e123'),能找到一个3

.代表任意一个字符print(re.fandall('a.b','a1b a b a-b aaaab')) 匹配到a1b a b a-b aab

?问好左边的出现过0次或1次print(re.fandall('ab?','a ab abb abbbb a1b'))匹配到a ab ab ab a

* 代表*左边的字符出现0次到正无穷次print(re.fandall('ab*','a ab abb abbbb a1b'))匹配到 a ab abb abbbb a

+ 代表+号左边的字符出现1次到无穷次print(re.fandall('ab+','a ab abb abbbb a1b'))匹配到 ab abb abbbb  

{m,n}代表括号左边字符出现m到n次print(re.fandall('ab{0,1}','a ab abb abbbb a1b'))匹配到a ab ab ab a,与?号一致

print(re.fandall('ab{0,}','a ab abb abbbb a1b'))匹配到 a ab abb abbbb a 不写就是正无穷次 结果与*号一致

print(re.fandall('ab{1,}','a ab abb abbbb a1b'))匹配到 ab abb abbbb  不写就是正无穷次 结果与+一致

也可以取{2,4}     print(re.fandall('ab{2,4,}','a ab abb abbbb a1b') 结果abb abbbb

贪婪匹配     .*

print(re.findall('a.*b','a1234567b123b')) 结果 a1234567b123b

非贪婪匹配  .*? 

print(re.findall('a.*b?','a1234567b123b'))结果a1234567b

|或者

print(re.findall('compan(iess|y)','companiess,company'))匹配到 iess y,只能取到组里的内容iess和y

要想全部取出需加固定写法?:

 

posted on 2018-01-11 00:28  刘了个岐  阅读(134)  评论(0编辑  收藏  举报

导航