正则表达式
正则表达式是一个特殊的字符数列,
一个字符串是否与我们设定的字符所匹配。
如果匹配,实现快递检索文本,替换文本的操作
1.检查一串数字是否是电话号码
2.检测一个字符串是否符合email的标准
3.把文本里指定的单词替换为另外一个词
正则表达式的灵魂在于规则
import re
a=‘java|c#|c++|python|javascript’
#print(a.index(‘python’)>-1)
#print(‘python’ in a)
r = re.findall(‘python’,a) ‘python’ 普通字符
if len®>0:
print(‘字符串中包含python’)
else:
print(‘字符串中不包含python’)
import re
a=‘java0c#5c++7python1javascript’
r = re.findall(’\d’,a) ‘\d’ 元字符 取0-9的数字字符
print ( r ) ‘\D’ 取数字外的字符
字符集
import re
a = ‘abc,abb,acc,acb,bac,afc’
r = re.findall(‘a[cf]c’,a) 利用元字符和普通字符进行字符的索引
print(r ) [^cf] 索引字符如果前面有^符号那么就表示索引除他之外的字符
或者使用列表索引【c-f】可以索引c-f索引字符
概况字符集
【0-9】字符集可以用\d来概括
【a-z】,【^0-9】同理,这两个也可以用\D来概括,
【A-Za-z0-9_】 单词字符集可以用\w来概括
@#¥……% 空格,\n,\r 其他字符集可以用\W来概括
空格,\n,\r 空白字符 可以用\s 来概括 ,\S非空白字符
数量词
import re
a = ‘python 111 , java,2423%0 php’
r = re.findall(’[a-z]{3,6}’,a) # 贪婪与非贪婪
print( r) 贪婪的情况 python默认在数量词允许的情况下取最大值
直到某个字符不满足此条件
import re
a = ‘python 111 , java,2423%0 php’
r = re.findall(’[a-z]{3,6}?’,a) # 贪婪与非贪婪
print( r) 默认非贪婪,需要改成贪婪的情况可以在数量词列表外加?
*,+,?
匹配*号字符前0次或者无限多次
匹配+号字符前1次或者无限多次
匹配?号字符前0次或者1次
import re
a = (‘pytho0python1pythonn2’)
r = re.findall(‘python*’,a) 输出pytho,python,pythonn
print®
import re
a = (‘pytho0python1pythonn2’)
r = re.findall(‘python+’,a) 输出python,pythonn
print®
import re
a = (‘pytho0python1pythonn2’)
r = re.findall(‘python?’,a) 输出pytho,python,python 《注意
print®
另外要注意数量词后出现的?是表示非贪婪模式
直接出现在字符后面表示的是元字符的匹配?号字符前0次或1次的意思