正则表达式和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']