正则表达式
匹配到你想要的
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
要想全部取出需加固定写法?: