import re # 引入re 模块
a = 'C|C++|Java|C#|Python|Javascript'
r = re.findall('Python',a) #findall 方法
print(r)
if len(r) > 0:
print('字符串中包含Python')
else:
print('No')
正则表达式不仅可以用来检测字符串,也可以用来替换字符串。
import re
a = 'C0C++7Java12C#9Python67\nJavascript8'
#用r来提取a中的数字
r = re.findall('\d',a) #\d 来表示数字(0-9)
print(r)
#用s来提取a中的非数字
s = re.findall('\D',a) #\D 来表示非数字的字符
print(s)
import re
a = 'abc,acc,adc,aec,adfc,ahc,afc'
r = re.findall('a[cf]c',s) #提取afc 或acc,普通字符a,c定界,元字符c,f
#[]里表示或。[cf] c或f.[cdf] c或d或f [^cfd]取反,不是c和d和f。[c-f]取c到f。
print(r)
import re
a = 'C0C++7Java12C#9Python67Javascript8\n\r &^'
r = re.findall('\d',a)
print(r)
#可自行验证
数量词,贪婪与非贪婪
import re
a = 'C0C++7Java12C#9Python67Javascript8\n\r &^'
r = re.findall('\w{3}',a) #提取出来的\w 3个一组
s = re.findall('[A-Za-z]{3}',a)
t = re.findall('[A-Za-z]{3,7}',a)#3到7个一组,优先选择7个
#贪婪 与 非贪婪
#python默认使用贪婪 按最大的匹配
u = re.findall('[A-Za-z]{3,7}?',a)#非贪婪 按最小的匹配,即3个一组
print(r)
print(s)
print(t)
print(u)
问号,星号,加号的使用方法
import re
a = 'pytho0python1pythonn2'
r = re.findall('python*',a) #['pytho', 'python', 'pythonn']
s = re.findall('python+',a)
t = re.findall('python?',a)
print(r)
print(s)
print(t)
import re
a = 'C0C++7Java12C#\n9Python67Javascript#8'
r = re.findall('c#',a,re.I)
r = re.findall('c#.{1}',a,re.I|re.S) # | 且
print(r)#['C#']
print(r1)#['C#\n']
re.sub简单用法
import re
a = 'C0C++C#7Java12C#\n9Python6C#7JavascriptC#8'
r = re.sub('C#','GO',a,0) #无限次替换
s = re.sub('C#','GO',a,1) #只替换一次
t = a.replace('C#','GO') #python内置函数
print(r)
print(s)
print(t)
import re
s = 'A1b2c3d4e5f6g7h8i9'
r = re.match(r'\d',s)
r1 = re.search(r'\d',s)
print(r) #None
print(r1)#<re.Match object; span=(1, 2), match='1'>
group()的用法
import re
s = 'life is short,i use python'
r = re.search('life.*python',s)
r1 = re.search(('life.*python'),s) #与上行一样
r2 = re.search('life(.*)python',s)
print(r.group())
print(r1.group())
print(r2.group(0)) #全文匹配
print(r2.group(1)) #括号内匹配
r3 = re.findall('life(.*)python',s)
print(r3)
import re
s = 'life is short,i use python,I love python'
r = re.search('life(.*)python(.*)python',s)
print(r.group())#life is short,i use python,I love python
print(r.group(0))#life is short,i use python,I love python
print(r.group(1))# is short,i use (第一组)
print(r.group(2))#,I love(第二组)
print(r.group(0,1,2)) #用元组的方式表达出来#('life is short,i use python,I love python', ' is short,i use ', ',I love ')
print(r.groups()) #只会表示出(.*)的内容#(' is short,i use ', ',I love ')