正则表达式和re模块

 
万能匹配:

贪婪匹配————>.*

非贪婪匹配————>.*?

拼接字符串:

str1 = 'hello'
str2 = 'world'
num = 123123
print(str1 + str2 + str(num))
helloworld123123

编码解码:

encode('utf-8')     #编码
decode('utf-8')     #解码

取数字:

idcard = '152601199506293125'
year = idcard[6:10] + ''  #取第6个到第10个(取头去尾)不要第10个。
month = idcard[10:12] + ''
day = idcard[12:14] + ''
print('生日: ' + year + month + day)
生日: 1995年06月29日

把字符串分割后组成列表的形式

str = '你是谁,你在哪'
print(str.split(','))
['你是谁', '你在哪', '你要干什么']

使用re模块实现正则表达式

代码说明
. 匹配除换行符外的任意字符
\w 匹配字母,数字,下划线,汉字
\s 匹配单个空白符,包括tab和换行
\W 匹配非\w以外的内容
\S 除单个字符
\b 匹配单词的开始和结束
\d 匹配数字

 

 

 

 

 

 

 

 

 

替换危险字符:

import re
str = r'(石头)|(天气)|(你好)'
str1  = '今天天气很好,看到路上有石头,碰到熟人说你好'
qwe = re.sub(str,'@@@@@',str1)
print(qwe)
今天@@@@@很好,看到路上有@@@@@,碰到熟人说@@@@@

贪婪匹配,非贪婪匹配

import re
info = 'qwffq213123feqfeqwf2132fd1f12rf1f21f'
str1 = re.compile('fq(.*)fe').search(info).group(1)     #gourp(1)代表匹配第一个括号里的内容
print(str1)
str2 = re.compile('fq(.*?)fe.*?1f(.*?)rf').search(info).group(1)    #gourp(1)代表匹配第一个括号里的内容
print(str2)
str3 = re.compile('fq(.*?)fe.*?1f(.*?)rf').search(info).group(2)    #gourp(2)代表匹配第二个括号里的内容
print(str3)
str4 = re.compile('fq(.*?)fe.*?1f(.*?)rf').findall(info)    #匹配整个字符串所有符合正则表达式的字符串,并以列表的形式返回
print(str4)
str5 = str4[0]
res = ''.join(str5)     #把元组拼接成字符串
print(res)
str6 = re.compile('(\d+)').findall(info)#findall匹配所有
result = ''.join(str6)#把列表拼接成字符串
print(result)
res = re.compile('qwffq(.*?)fe').findall(info)
print(res)
213123feq
213123
12
[('213123', '12')]
21312312
2131232132112121
['213123']

 

posted @ 2018-11-28 21:32  Dayle  阅读(219)  评论(0编辑  收藏  举报