010、【byhy】 常见语法—— 起始、结尾位置 和 单行、多行模式

 

 

一、 常见语法——  起始、结尾位置 和 单行、多行模式

 

010、【byhy】 常见语法——  起始、结尾位置 和 单行、多行模式

 

^ 表示匹配文本的 开头 位置。

正则表达式可以设定 单行模式 和 多行模式

如果是 单行模式 ,表示匹配 整个文本 的开头位置。

如果是 多行模式 ,表示匹配 文本每行 的开头位置。

比如,下面的文本中,每行最前面的数字表示水果的编号,最后的数字表示价格

001-苹果价格-60002-橙子价格-70,
003-香蕉价格-80,

如果我们要提取所有的水果编号,用这样的正则表达式 ^\d+

010、【byhy】 常见语法——  起始、结尾位置 和 单行、多行模式

上面的正则表达式,使用在Python程序里面,如下所示

import re

content = ‘‘‘001-苹果价格-60
002-橙子价格-70
003-香蕉价格-80‘‘‘

# re.M 表示多行模式,不加的话默认是单行模式
p = re.compile(r^\d+, re.M)
for one in p.findall(content):
    print(one)

print(=====单行模式======)
content = ‘‘‘001-苹果价格-60
002-橙子价格-70
003-香蕉价格-80‘‘‘

# 不加的话默认是单行模式
p1 = re.compile(r^\d+)
for one in p1.findall(content):
    print(one)

执行结果如下:

001
002
003
=====单行模式======
001

Process finished with exit code 0

因为单行模式下,^ 只会匹配整个文本的开头位置。

 

$ 表示匹配文本的 结尾 位置。

如果是 单行模式 ,表示匹配 整个文本 的结尾位置。

如果是 多行模式 ,表示匹配 文本每行 的结尾位置。

比如,下面的文本中,每行最前面的数字表示水果的编号,最后的数字表示价格

001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,

如果我们要提取所有的水果编号,用这样的正则表达式:  \d+,$

010、【byhy】 常见语法——  起始、结尾位置 和 单行、多行模式

 

对应代码

import re

content = ‘‘‘001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
‘‘‘

p = re.compile(r\d+,$, re.MULTILINE)
for one in p.findall(content):
    print(one)

注意,compile 的第二个参数 re.MULTILINE ,指明了使用多行模式,

运行结果如下:

60,
70,
80,

Process finished with exit code 0

如果,去掉 compile 的第二个参数 re.MULTILINE:

import re

content = ‘‘‘001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
‘‘‘
print(=======多行模式=========)

p = re.compile(r\d+,$, re.MULTILINE)
for one in p.findall(content):
    print(one)

print(=======单行模式=========)

p1 = re.compile(r\d+,$)
for one in p1.findall(content):
    print(one)

运行结果如下:

=======多行模式=========
60,
70,
80,
=======单行模式=========
80,

Process finished with exit code 0

 

010、【byhy】 常见语法—— 起始、结尾位置 和 单行、多行模式

上一篇:用Python进行EV3编程


下一篇:Qt532.QString_填充字符