python re 正则表达式-基础版

import re
#正则表达式是用来干什么的?匹配字符串
#首先回顾一下字符串的使用方法。
# s = "hello world"
# print(s.find("e")) #查找
# ret = s.replace("ll","xx")
# print(ret)
# print(s.split("w"))
#string提供的方法是完全匹配。
#切入正题,正则匹配【模糊匹配】
# print(re.findall("w\w{2}l","hello world")) #['worl']
# . 匹配除换行符以外的任意字符
# \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'。
# \s 匹配任意的空白符
# \d 匹配数字
# \b 匹配单词的开始或结束
# ^  匹配字符串的开始
# $  匹配字符串的结束
# \w 能不能匹配汉字要视你的操作系统和你的应用环境而定
# print(re.findall("alex","sldfkjlajalexlskjdfalex"))#['alex', 'alex']杀鸡焉用牛刀s.find能搞定!!
"""
元字符
.通配符   代表除了换行符之外的所有单个字符
^尖角符   只以字符串开始来匹配
$导乐符   只以结尾匹配。
*星字符   重复匹配,重复前面一个字符来匹配0到+oo个。 * == {0,+oo}正无穷 推荐使用
+加字符   重复匹配,重复前面一个字符来匹配1到+oo个。 + == {1,+oo}        推荐使用  
?问号符   匹配,重复前面一个字符来匹配0到1个        ? == {0,1}          推荐使用
{}大括号  重复匹配,重复前面一个字符来匹配{}个 {5}5次{1,3}1到3次,贪婪匹配,多个满足取最多。
[]字符集  或的关系[c,d]c或者d,只能匹配1次,[a-z]表示a,b,c,d...z 
[]字符集  取消元字符的特殊功能 "a[w,*]d","aedaxdapda*dawd" ,,也行,我去
[]字符集  三个例外 \ ^ - 三个例外的不取消元字符的特殊功能
[^]取反   [^4,5]","123456"))#['1', '2', '3', '6']取反,怎么匹配45???
|管道符   或的意思
\反斜杠符 最重要的一个 反斜杠符后面跟元字符去除特殊功能
\反斜杠符 最重要的一个 反斜杠符后面跟普通字符实现特殊功能
    \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  匹配一个[单词|特殊]字符的边界,比如空格 ,&,#,,¥,%等 r"I\b","I am a LI$T"
"""
# print(re.findall("w..l","hello world"))#['worl'] .代表除了换行符之外的所有单个字符
# print(re.findall("^h...o","lsdhflhello")) #^只以开始匹配。[]
# print(re.findall("h...o$","lsdhflhello")) #^只以结尾匹配。['hello']
# print(re.findall("alex.*li","lsdhaalexflhellilo")) #*重复匹配,重复前面一个字符来匹配。['alexflhelli']
# print(re.findall("alex*li","lsdhaalexxxxxxxlilo")) #*重复匹配,重复前面一个字符来匹配。['alexxxxxxxli']
# print(re.findall("alex*li","lsdhaailo")) #*重复匹配,重复前面一个字符来匹配。['alexxxxxxxli']
# print(re.findall("ab+","skldfaaaa"))#[] b+ 也代表b0,就是0个b,匹配不上
# print(re.findall("a?b","skldbfaaaba"))#['b', 'ab']a?b 能匹配0个a或者1个a
# print(re.findall("a{5}b","sdfadsfaaaaaabsdflkas"))#['aaaaab']重复匹配,重复前面一个字符来匹配{5}个。
# print(re.findall("a{3,5}b","sdfadsfaaaaaabsdflkas"))#['aaaaab']重复匹配,重复前面一个字符来匹配{3到5}个,多个满足取最多。
# print(re.findall("a[e,x]d","aedaxdapd"))#['aed', 'axd']或的关系[e,x]c或者d,只能匹配1次可是是空格。
# print(re.findall("a[w,*,.,,]d","aedaxa.ddapda*daa,dwd"))#['a.d', 'a*d', 'a,d']取消元字符的特殊功能*w 。
# print(re.findall("a[a-z]d","aedaxa.ddapda*daa,dwd"))#['aed', 'apd'] 三个例外 \ ^ - 三个例外的不取消元字符的特殊功能 。
# print(re.findall("[1-9,a-z,A-Z]","12tyAD"))#['1', '2', 't', 'y', 'A', 'D']
# print(re.findall("[1-9a-zA-Z]","12tyAD"))#['1', '2', 't', 'y', 'A', 'D']和上面的使用方法是一样的
# print(re.findall("^iu","12tyADiu"))#[]
# print(re.findall("[^t]","12tyADtiu"))#['1', '2', 'y', 'A', 'D', 'i', 'u'][^]取反
# print(re.findall("[^4,5]","12345,6"))#['1', '2', '3', '6']取反包括,
# print(re.findall("[^45]","12345,6"))#['1', '2', '3', '6']取反不包括,
# print(re.findall("\d{11}","151333333333a3333sd333151005183"))#['15133333333', '33315100518']\d匹配[0-9]
# print(re.findall("\s{3}asd","fkasd    asd"))#['   asd']\s取空白字符
# print(re.findall("\wasd","fkasd    asd"))#['kasd'] 匹配字母数字字符[1-9a-zA-Z]
# print(re.findall("\Wasd","fkasd    asd"))#[' asd'] 匹配非字母数字字符[^1-9a-zA-Z]
# print(re.findall("I","I am a LIST"))#['I', 'I']  我只想要代表我这个I
# print(re.findall("I\b","I am a LIST"))#[]  我只想要代表我这个I
# print(re.findall(r"I\b","I am a LIST"))#['I']  我只想要代表我这个I,为啥加了给r
# print(re.findall(r"I\b","I am a LI$T"))#['I', 'I']  空格和$都是特殊字符,逗号也算
# print(re.findall(r"\bI"," Iam a LI$T"))#['I'] 放到前面来获取也可以的
# print("***"*20)
# print(re.search("alux","alux0000alux000alux"))# <re.Match object; span=(0, 4), match='alux'> 返回第一个对象0-4的位置
# print(re.search("alux","alux0000alux000alux").group())# alux(字符串) 匹配出满足条件的第一个结果
# print(re.search("a\..d","apa.rddd").group())# a.rd 反斜杠可以将.的特殊意义去除
print(re.findall("D.c","adhfD\c"))#???????

猜你喜欢

转载自www.cnblogs.com/bdua/p/12241149.html