python正则表达式(^$())(四)起始位置和单⾏,多⾏模式
^表⽰匹配⽂本的起始位置。
正则表达式可以设定单⾏模式和多⾏模式
如果是单⾏模式,表⽰匹配整个⽂本的开头位置
如果是多⾏模式,表⽰匹配⽂本每⾏的开头位置
⽐如,下⾯的⽂本中,每⾏最前⾯的数字表⽰⽔果的编号,最后的数字表⽰价格
001-苹果价格-60,
002-橙⼦价格-70,
003-⾹蕉价格-80,
 如果我们要提取所有的⽔果编号,⽤这样的正则表达式 ^\d+
⽤python代码展⽰单⾏模式:
content='''001-苹果价格-60,
002-橙⼦价格-70,
003-⾹蕉价格-80,'''
import re
p=repile(r'^\d+')
for one in p.findall(content):
print(one)
'''
输出结果:001
'''
默认为单⾏模式,所以只输⼊001
 ⽤python代码展⽰多⾏模式:
content='''001-苹果价格-60,
002-橙⼦价格-70,
003-⾹蕉价格-80,'''
import re
p=repile(r'^\d+',re.M)
for one in p.findall(content):
print(one)
'''
输出结果:
python正则表达式不包含
001
002
003
'''
注意:compile的第⼆个参数re.M,指明了使⽤多⾏模式,若不加re.M,表⽰单⾏模式,^只会匹配整个⽂本的开头位置  $表⽰匹配⽂本的结束位置
如果是单⾏模式,表⽰匹配整个⽂本的结束位置
如果是多⾏模式,表⽰匹配⽂本每⾏的结束位置
⽐如,下⾯的⽂本中,每⾏最前⾯的数字表⽰⽔果的编号,最后的数字表⽰价格
001-苹果价格-60
002-橙⼦价格-70
003-⾹蕉价格-80
  如果我们要提取所有的⽔果价格,⽤这样的正则表达式 ^\d+$
⽤python代码展⽰单⾏模式:
content='''001-苹果价格-60
002-橙⼦价格-70
003-⾹蕉价格-80'''
import re
p=repile(r'\d+$')
for one in p.findall(content):
print(one)
'''
输出结果:
80
'''
  ⽤python代码展⽰多⾏模式:
content='''001-苹果价格-60
002-橙⼦价格-70
003-⾹蕉价格-80'''
import re
p=repile(r'\d+$',re.M)
for one in p.findall(content):
print(one)
'''
输出结果:
60
70
80
'''
 括号-组选择
括号称之为正则表达式的组选择,是从正则表达式匹配的内容⾥⾯扣取出其中的某些部分
前⾯,我们有个例⼦,从下⾯的⽂本中,选中每⾏逗号前⾯的字符串,也包括逗号本⾝
苹果,苹果是绿⾊的
橙⼦,橙⼦是橙⾊的
⾹蕉,⾹蕉是黄⾊的
  就可以这样写正则表达式 ^.*,
但是,如果我们要求不要包括逗号呢?
当然不能直接这样写 ^.*
因为最后的逗号是特征所在,如果去掉它,就没法逗号前⾯的了。
但是把逗号放在正则表达式中,⼜会包含逗号
解决问题的⽅法就是使⽤组选择符:括号
我们这样写 ^(.*),  ,结果如下
我们把要从整个表达式中提取的部分放在括号中,这样⽔果的名字就被单独的放在组group中了对应的python代码如下:
content='''苹果,苹果是绿⾊的
橙⼦,橙⼦是橙⾊的
⾹蕉,⾹蕉是黄⾊的
'''
import re
p=repile(r'^(.*),',re.MULTILINE)
for one in p.findall(content):
print(one)
'''
输出结果:
苹果
橙⼦
⾹蕉
'''
python代码实现:
content='''苹果,苹果是绿⾊的
橙⼦,橙⼦是橙⾊的
⾹蕉,⾹蕉是黄⾊的
'''
import re
p=repile(r'^(.*)(,)',re.MULTILINE)
for one in p.findall(content):
print(one)
'''
输出结果:
('苹果', ',')
('橙⼦', ',')
('⾹蕉', ',')
'''
python代码实现:
content='''张三,⼿机号码159********
李四,⼿机号码139********
王⼆,⼿机号码138********
'''
import re
p=repile(r'^(.+),.+(\d{11})',re.MULTILINE) for one in p.findall(content):
print(one)
'''
输出结果:
('张三', '159********')
('李四', '139********')
('王⼆', '138********')
'''

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。