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"))#???????
原文地址:https://www.cnblogs.com/bdua/p/12241149.html
时间: 2024-10-10 04:26:00