#__author: Administrator|
#date:2019/12/3 0003
import re
s = ‘hello world‘
a = s.find(‘h‘)
print(a)
p = s.replace(‘l‘, ‘xx‘)
print(p)
b = s.split(‘w‘)
print(b)
##############################
#元字符 1:‘ . ’通配符 代指所有的字符,除了换行符 一个通配符只能代指一个字符
a = re.findall(‘w..l‘, ‘hello world‘)
print(a)# [‘worl‘]
print(re.findall(‘w.l‘, ‘hello w\nld‘)) #[]
#re.findall(pattern,string,flag)flag可以更改‘.’所代指的规则,即‘\n’也可以代指,但一般不乱改
##############################
#元字符 2:‘^’尖角符 只在string头部 开始匹配
print(re.findall(‘^h...o‘, ‘habcodefg‘)) #[‘habco‘]
#元字符 3:‘$’ 只在string尾部 开始匹配
print(re.findall(‘h..l$‘, ‘abcddhivl‘)) #[‘hivl‘]
#元字符 4:‘*’ 重复匹配[0,无穷]次
print(re.findall(‘ba*‘, ‘cfffbaaaaaa‘))#[‘baaaaaa‘]
print(re.findall(‘ba*‘, ‘cfffb‘))#[‘b‘]
#元字符 5:‘+’ 重复匹配[1,无穷]次
print(re.findall(‘ba+‘, ‘hhhha‘)) #[]
print(re.findall(‘ba+‘, ‘hhhhbaaaaa‘)) #[‘baaaaa‘]
#元字符6:‘?’ 重复匹配[0,1]次
print(re.findall(‘a?b‘, ‘bbbbbbbk‘))#[‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘]
print(re.findall(‘a?b‘, ‘abbbbbbbk‘))#[‘ab‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘, ‘b‘]
print(re.findall(‘a?b‘, ‘aaababaaabb‘))#[‘ab‘, ‘ab‘, ‘ab‘, ‘b‘] #不会出现[aaab]等多个a 的情况
#元字符7:‘{n}’大括号。重复匹配人n次 或{n,m}n到m次
print(re.findall(‘a{3}b‘, ‘aaaaaaab‘))#[‘aaab‘]
print(re.findall(‘a{3}b‘, ‘ab‘))#[]
print(re.findall(‘a{1,3}b‘, ‘aab‘))#[‘aab‘]
print(re.findall(‘a{1,3}b‘, ‘aaaaaaaaab‘))#[‘aaab‘] 这是贪婪匹配 匹配最多的次数
##结论1:*={0,正无穷}
##结论2:+={1,正无穷}
##结论3:?={0,1}
#元字符8:‘[]‘字符集 取消元字符的特殊功能(\ ^ - )例外
print(re.findall(‘a[b,c]d‘, ‘acd‘))#[‘acd‘]二选一 [com,cn]用来筛选网址
print(re.findall(‘[a-z]‘, ‘ad115fdfsfsz‘)) #[‘a‘, ‘d‘, ‘f‘, ‘d‘, ‘f‘, ‘s‘, ‘f‘, ‘s‘, ‘z‘] ‘-‘的功能还在 去a到z之间的值
print(re.findall(‘[w.*]‘, ‘wsd.*‘)) #[‘w‘, ‘.‘, ‘*‘] * . 的功能都取消了
print(re.findall(‘[^w.*]‘, ‘aawsd.*‘)) #[‘a‘, ‘a‘, ‘s‘, ‘d‘] 取反 除了(w.*)都去出来了
print(re.findall(‘[^4,5]‘, ‘12344135‘)) #没有4或5 [‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘3‘]
#元字符 9:\ 反斜杠 1 反斜杠后跟元字符取出特殊功能 如 \* 取消重复匹配 的功能
# 2 反斜杠后跟普通字符实现特殊功能 如\n 换行
#这里我举一些普通字符的特殊含义
# \d=[0,9]
# \D=[^0,9]
# \s=[\t\n\r\f\v] 匹配任何空的字符
# \S=[^\t\n\r\f\v]匹配任何非空的字符
# \w=[a-zA-Z0-9]=[A-Z,a-z,0-9]匹配任何数字字母字符
# \W=[^a-zA-Z0-9] 匹配任何非数字 非字母 字符
# \b 匹配一个特殊字符边界
print(re.findall(r‘i\b‘, ‘i am a girl‘)) #[‘i‘]取到第一个 i 这里的‘r’是表示让字符串里的内容代表他本来代表的功能或内容
################
print(re.search(‘sd‘, ‘sdffaafasd‘).group()) #sd search只取匹配到的第一个符合的字符或字符串
#元字符 10 :() 括号 11:| 竖线
print(re.search(‘(ad)+‘, ‘adadadsadaf‘).group()) #adadad 取括号里面的整体
print(re.search(‘(ad)|3‘, ‘ad3‘).group()) #ad
print(re.search(‘(ad)|3‘, ‘3ad‘).group()) #3 取ad 或3 竖线表示或
ret = re.search(‘(?P<id>\d{3})/(?P<name>\w{3})‘, ‘asdad321/kkk‘)
print(ret.group()) #321/kkk
print(ret.group(‘id‘)) #321
print(ret.group(‘name‘)) #kkk
原文:https://www.cnblogs.com/CIBud/p/11997133.html