继续正则表达式
边界匹配
import re
qq = ‘10000000000’
r = re.findall(’^\d{4,8}$’,qq) ^ $ 两段填写这两个字符就可以使其判断完整的字符串
print(r )
组
import re
a = ‘PythonPythonPythonPythonPythonPython’
#4-8
r = re.findall(’(Python){3}’,a)
#[abc] 或关系 ()且关系
print(r )
概括字符集
。 点表示匹配除换行符\n之外其他所有字符
re.findall的使用
import re
lanuage = ‘PythonC#\nJavaPHP’
r = re.findall(‘c#.{1}’,lanuage,re.I | re.S)
print®
re.I 与re.S 都是re.findall中读取字符的一种方式
re.I 表示忽略大小写的匹配,如不加那么匹配不到C#
re.S 表示可匹配包括换行符\n在内的索引字符。
中间的 | 是且关系,表示这两个条件同时生效。
c#。{1} 表示匹配之后的一个字符
re.sub 替换
import re
a = ‘C#CC++PYTHONJAVAPHPWEB’
#r = re.sub(‘C’,‘GO’,a,1) 比较复杂的替换建议使用,re。sub
r= a.replace(‘C’,‘GO’,1) 比较简单的替换可以用系统内置函数replace
print(r )
sub 第一项可以写正则表达式,或者需要替换的值。第二项写替换的值,或正则
,第三项写取值范围、第4个是替换多少个,不写默认值为0,
表示替换所有,1就是替换一个replace,第一项写需要替换的值,其他相同。
import re
a = ‘C#CC++PYTHONJAVAPHPWEB’
def convert(value):
print(value)
matched = value.group()
return ‘!!’+matched+’!!’
r = re.sub(‘C’,convert,a,0)
#r= a.replace(‘C’,‘GO’,1)
print(r )
把大于等于的字符改为9,反之改为0
import re
a = ‘AabBd460abykoi4562’
def convert(value): 设定convert 函数
matched = value.group() 设置matched 函数为value。group()
if int(matched) >= 6: 设置matched把字符赋值为整数才可以进行计算
return ‘9’ 返回9
else: 反之
return ‘0’ 返回0
r = re.sub(’\d’,convert,a) 使用re.sub,\d调用字符串内所有数字字符
print( r) 修改为convert函数,取之于a变量
match,search
import re
a = ‘A465b6549q8brg’
b = re.match(’\d’,a) match从字符串首字符开始匹配,如没有匹配到则返回空值none
print(b)
c = re.search(’\d’,a) search 扫描完整字符串,然后提取第一个字符返回
d = re.findall(’\d’,a) findall 扫描完整字符串,并提取所有需要的字符
print©
print(c.group()) group()组可导出位置的值
print(c.span)
print(d)
None
<re.Match object; span=(1, 2), match=‘4’>
4
(1, 2)
[‘4’, ‘6’, ‘5’, ‘6’, ‘5’, ‘4’, ‘9’, ‘8’]
group
import re
a = ‘life is short,i use python’
#None
r = re.search(‘life(.*)python’,a)
print(r.group()) group表示 获取一个分组的匹配
在字符内没有()的时候默认group()内为0 ,
表示正则表达式内所有的值
括号内数字如果改为1,表示取第一个元组内的值
b = re.findall(‘life(.*)python’,a)
print(b)
is short,i use
[’ is short,i use ']
c = re.search(‘life(.)i(.)python’,a)
print(c.group(0,1,2))
(‘life is short,i use python’, ’ is short,’, ’ use ')