怎么用wordpress做企业网站,wordpress激活码充值,手机网站免费生成app,程序员常用的工具有哪些一#xff1a;什么是正则#xff1f; 正则就是用一些具有特殊含义的符号组合到一起#xff08;称为正则表达式#xff09;来描述字符或者字符串的方法。或者说#xff1a;正则就是用来描述一类事物的规则。#xff08;在Python中#xff09;它内嵌在Python中#xff0c…一什么是正则 正则就是用一些具有特殊含义的符号组合到一起称为正则表达式来描述字符或者字符串的方法。或者说正则就是用来描述一类事物的规则。在Python中它内嵌在Python中并通过 re 模块实现。正则表达式模式被编译成一系列的字节码然后由用 C 编写的匹配引擎执行。 生活中处处都是正则 比如我们描述4条腿 你可能会想到的是四条腿的动物或者桌子椅子等 继续描述4条腿活的 就只剩下四条腿的动物这一类了 二常用匹配模式(元字符) http://blog.csdn.net/yufenghyc/article/details/51078107 # 匹配模式
#一对一的匹配
# hello.replace(old,new)
# hello.find(pattern)#正则匹配
import re
#\w与\W
print(re.findall(\w,hello egon 123)) #[h, e, l, l, o, e, g, o, n, 1, 2, 3]
print(re.findall(\W,hello egon 123)) #[ , ]#\s与\S
print(re.findall(\s,hello egon 123)) #[ , , , ]
print(re.findall(\S,hello egon 123)) #[h, e, l, l, o, e, g, o, n, 1, 2, 3]#\n \t都是空,都可以被\s匹配
print(re.findall(\s,hello \n egon \t 123)) #[ , \n, , , \t, ]#\n与\t
print(re.findall(r\n,hello egon \n123)) #[\n]
print(re.findall(r\t,hello egon\t123)) #[\n]#\d与\D
print(re.findall(\d,hello egon 123)) #[1, 2, 3]
print(re.findall(\D,hello egon 123)) #[h, e, l, l, o, , e, g, o, n, ]#\A与\Z
print(re.findall(\Ahe,hello egon 123)) #[he],\A^
print(re.findall(123\Z,hello egon 123)) #[he],\Z$#^与$
print(re.findall(^h,hello egon 123)) #[h]
print(re.findall(3$,hello egon 123)) #[3]# 重复匹配| . | * | ? | .* | .*? | | {n,m} |
#.
print(re.findall(a.b,a1b)) #[a1b]
print(re.findall(a.b,a1b a*b a b aaab)) #[a1b, a*b, a b, aab]
print(re.findall(a.b,a\nb)) #[]
print(re.findall(a.b,a\nb,re.S)) #[a\nb]
print(re.findall(a.b,a\nb,re.DOTALL)) #[a\nb]同上一条意思一样#*
print(re.findall(ab*,bbbbbbb)) #[]
print(re.findall(ab*,a)) #[a]
print(re.findall(ab*,abbbb)) #[abbbb]#?
print(re.findall(ab?,a)) #[a]
print(re.findall(ab?,abbb)) #[ab]
#匹配所有包含小数在内的数字
print(re.findall(\d\.?\d*,asdfasdf123as1.13dfa12adsf1asdf3)) #[123, 1.13, 12, 1, 3]#.*默认为贪婪匹配
print(re.findall(a.*b,a1b22222222b)) #[a1b22222222b]#.*?为非贪婪匹配推荐使用
print(re.findall(a.*?b,a1b22222222b)) #[a1b]#
print(re.findall(ab,a)) #[]
print(re.findall(ab,abbb)) #[abbb]#{n,m}
print(re.findall(ab{2},abbb)) #[abb]
print(re.findall(ab{2,4},abbb)) #[abb]
print(re.findall(ab{1,},abbb)) #ab{1,} ab
print(re.findall(ab{0,},abbb)) #ab{0,} ab*#[]
print(re.findall(a[1*-]b,a1b a*b a-b)) #[]内的都为普通字符了且如果-没有被转意的话应该放到[]的开头或结尾
print(re.findall(a[^1*-]b,a1b a*b a-b ab)) #[]内的^代表的意思是取反所以结果为[ab]
print(re.findall(a[0-9]b,a1b a*b a-b ab)) #[]内的^代表的意思是取反所以结果为[ab]
print(re.findall(a[a-z]b,a1b a*b a-b ab aeb)) #[]内的^代表的意思是取反所以结果为[ab]
print(re.findall(a[a-zA-Z]b,a1b a*b a-b ab aeb aEb)) #[]内的^代表的意思是取反所以结果为[ab]#\# print(re.findall(a\\c,a\c)) #对于正则来说a\\c确实可以匹配到a\c,但是在python解释器读取a\\c时会发生转义然后交给re去执行所以抛出异常
print(re.findall(ra\\c,a\c)) #r代表告诉解释器使用rawstring即原生字符串把我们正则内的所有符号都当普通字符处理不要转义
print(re.findall(a\\\\c,a\c)) #同上面的意思一样和上面的结果一样都是[a\\c]#():分组
print(re.findall(ab,ababab123)) #[ab, ab, ab]
print(re.findall((ab)123,ababab123)) #[ab]匹配到末尾的ab123中的ab
print(re.findall((?:ab)123,ababab123)) #findall的结果不是匹配的全部内容而是组内的内容,?:可以让结果为匹配的全部内容
print(re.findall(href(.*?),a hrefhttp://www.baidu.com点击/a))#[http://www.baidu.com]
print(re.findall(href(?:.*?),a hrefhttp://www.baidu.com点击/a))#[hrefhttp://www.baidu.com]#|
print(re.findall(compan(?:y|ies),Too many companies have gone bankrupt, and the next one is my company)) # re模块提供的方法介绍
import re
#1
print(re.findall(e,alex make love) ) #[e, e, e],返回所有满足匹配条件的结果,放在列表里
#2
print(re.search(e,alex make love).group()) #e,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配则返回None。#3
print(re.match(e,alex make love)) #None,同search,不过在字符串开始处进行匹配,完全可以用search^代替match#4
print(re.split([ab],abcd)) #[, , cd]先按a分割得到和bcd,再对和bcd分别按b分割#5
print(,re.sub(a,A,alex make love)) # Alex mAke love不指定n默认替换所有
print(,re.sub(a,A,alex make love,1)) # Alex make love
print(,re.sub(a,A,alex make love,2)) # Alex mAke love
print(,re.sub(^(\w)(.*?\s)(\w)(.*?\s)(\w)(.*?)$,r\5\2\3\4\1,alex make love)) # love make alexprint(,re.subn(a,A,alex make love)) # (Alex mAke love, 2),结果带有总共替换的个数#6
objre.compile(\d{2})print(obj.search(abc123eeee).group()) #12
print(obj.findall(abc123eeee)) #[12],重用了obj import reprint(re.findall((?Ptag_name\w)\w/(?Ptag_name),h1hello/h1)) #[h1]print(re.search((?Ptag_name\w)\w/(?Ptag_name),h1hello/h1).group()) #h1hello/h1print(re.search((?Ptag_name\w)\w/(?Ptag_name),h1hello/h1).groupdict()) #h1hello/h1 print(re.search(r(\w)\w/(\w),h1hello/h1).group())print(re.search(r(\w)\w/\1,h1hello/h1).group()) 补充一 #补充二 import re#使用|先匹配的先生效|左边是匹配小数而findall最终结果是查看分组所有即使匹配成功小数也不会存入结果#而不是小数时就去匹配(-?\d)匹配到的自然就是非小数的数在此处即整数#print(re.findall(r-?\d\.\d*|(-?\d),1-2*(60(-40.35/5)-(-4*3)))) #找出所有整数[1, -2, 60, , 5, -4, 3]#找到所有数字:print(re.findall(\D?(\-?\d\.?\d*),1-2*(60(-40.35/5)-(-4*3)))) # [1,2,60,-40.35,5,-4,3] #计算器作业参考http://www.cnblogs.com/wupeiqi/articles/4949995.html
expression1-2*((602*(-3-40.0/5)*(9-2*5/37/3*99/4*299810*568/14))-(-4*3)/(16-3*2))contentre.search(\(([\-\\*\/]*\d\.?\d*)\),expression).group() #(-3-40.0/5) #为何同样的表达式search与findall却有不同结果:print(re.search(\(([\\-\*\/]*\d\.?\d*)\),1-12*(60(-40.35/5)-(-4*3))).group()) #(-40.35/5)print(re.findall(\(([\\-\*\/]*\d\.?\d*)\),1-12*(60(-40.35/5)-(-4*3)))) #[/5, *3] #看这个例子:(\d)相当于(\d)(\d)(\d)(\d)...,是一系列分组print(re.search((\d),123).group()) #group的作用是将所有组拼接到一起显示出来print(re.findall((\d),123)) #findall结果是组内的结果,且是最后一个组的结果 search与findall #_*_coding:utf-8_*___author__ Linhaifeng#在线调试工具:tool.oschina.net/regex/#import re shttp://www.baidu.comegonoldboyedu.com你好010-3141 #最常规匹配# contentHello 123 456 World_This is a Regex Demo# resre.match(Hello\s\d\d\d\s\d{3}\s\w{10}.*Demo,content)# print(res)# print(res.group())# print(res.span()) #泛匹配# contentHello 123 456 World_This is a Regex Demo# resre.match(^Hello.*Demo,content)# print(res.group()) #匹配目标,获得指定数据 # contentHello 123 456 World_This is a Regex Demo# resre.match(^Hello\s(\d)\s(\d)\s.*Demo,content)# print(res.group()) #取所有匹配的内容# print(res.group(1)) #取匹配的第一个括号内的内容# print(res.group(2)) #去陪陪的第二个括号内的内容 #贪婪匹配:.*代表匹配尽可能多的字符# import re# contentHello 123 456 World_This is a Regex Demo## resre.match(^He.*(\d).*Demo$,content)# print(res.group(1)) #只打印6,因为.*会尽可能多的匹配,然后后面跟至少一个数字 #非贪婪匹配:?匹配尽可能少的字符# import re# contentHello 123 456 World_This is a Regex Demo## resre.match(^He.*?(\d).*Demo$,content)# print(res.group(1)) #只打印6,因为.*会尽可能多的匹配,然后后面跟至少一个数字 #匹配模式:.不能匹配换行符contentHello 123456 World_Thisis a Regex Demo# resre.match(He.*?(\d).*?Demo$,content)# print(res) #输出None # resre.match(He.*?(\d).*?Demo$,content,re.S) #re.S让.可以匹配换行符# print(res)# print(res.group(1)) #转义:\ # contentprice is $5.00# resre.match(price is $5.00,content)# print(res)## resre.match(price is \$5\.00,content)# print(res) #总结:尽量精简,详细的如下 # 尽量使用泛匹配模式.* # 尽量使用非贪婪模式:.*? # 使用括号得到匹配目标:用group(n)去取得结果 # 有换行符就用re.S:修改模式 #re.search:会扫描整个字符串,不会从头开始,找到第一个匹配的结果就会返回 # import re# contentExtra strings Hello 123 456 World_This is a Regex Demo Extra strings## resre.match(Hello.*?(\d).*?Demo,content)# print(res) #输出结果为None ## import re# contentExtra strings Hello 123 456 World_This is a Regex Demo Extra strings## resre.search(Hello.*?(\d).*?Demo,content) ## print(res.group(1)) #输出结果为 #re.search:只要一个结果,匹配演练,import recontenttbodytr id4766303201494371851675 classeven tddiv classhdspan classnum1/spandiv classrk span classu-icn u-icn-75/span/div/div/tdtd classrankdiv classf-cbdiv classtta href/song?id476630320img classrpic srchttp://p1.music.126.net/Wl7T1LBRhZFg0O26nnR2iQ/19217264230385030.jpg?param50y50amp;quality100/aspan data-res-id476630320 # resre.search(a\shref.*?b\stitle(.*?).*?b,content)# print(res.group(1)) #re.findall:找到符合条件的所有结果# resre.findall(a\shref.*?b\stitle(.*?).*?b,content)# for i in res:# print(i) #re.sub:字符串替换import recontentExtra strings Hello 123 456 World_This is a Regex Demo Extra strings # contentre.sub(\d,,content)# print(content) #用\1取得第一个括号的内容#用法:将123与456换位置# import re# contentExtra strings Hello 123 456 World_This is a Regex Demo Extra strings## # contentre.sub((Extra.*?)(\d)(\s)(\d)(.*?strings),r\1\4\3\2\5,content)# contentre.sub((\d)(\s)(\d),r\3\2\1,content)# print(content) # import re# contentExtra strings Hello 123 456 World_This is a Regex Demo Extra strings## resre.search(Extra.*?(\d).*strings,content)# print(res.group(1)) # import requests,re# responerequests.get(https://book.douban.com/).text # print(respone)# print(*1000)# print(*1000)# print(*1000)# print(*1000)# resre.findall(li.*?cover.*?href(.*?).*?title(.*?).*?more-meta.*?author(.*?)/span.*?year(.*?)/span.*?publisher(.*?)/span.*?/li,respone,re.S)# # resre.findall(li.*?cover.*?href(.*?).*?more-meta.*?author(.*?)/span.*?year(.*?)/span.*?publisher(.*?)/span.*?/li,respone,re.S)### for i in res:# print(%s %s %s %s %(i[0].strip(),i[1].strip(),i[2].strip(),i[3].strip())) 转载于:https://www.cnblogs.com/xuxuchao/p/10244488.html