text='POLO1.4自动舒适  标准价121000元  现价111600元  降幅9400元  预计再降400元  桑塔纳3000手动标准型  标准价118000元  现价107000元  降幅11000元  预计再降1000元  爱丽舍自动天窗型 标准价122800元  现价109600元  降幅13200元  预计再降400元  凯越1.6手动舒适  标准价117800元  现价107600元 降幅10200元  预计再降400元’

编程实现,提取出text文本中所有的价格。
此题目采用python正则表达式快速解决。

import re
text='''POLO1.4自动舒适  标准价121000元  现价111600元  降幅9400元  
预计再降400元  桑塔纳3000手动标准型  标准价118000元  现价107000元 
降幅11000元  预计再降1000元  爱丽舍自动天窗型  标准价122800元  
现价109600元  降幅13200元  预计再降400元  凯越1.6手动舒适
标准价117800元  现价107600元 降幅10200元  预计再降400元'''
p=re.compile('\d+元')
list1=p.findall(text)
print(list1)

运行结果
[‘121000元’, ‘111600元’, ‘9400元’, ‘400元’, ‘118000元’, ‘107000元’, ‘11000元’, ‘1000元’, ‘122800元’, ‘109600元’, ‘13200元’, ‘400元’, ‘117800元’, ‘107600元’, ‘10200元’, ‘400元’]


编译正则表达式创建对象

正则表达式(RegularExpression)通常被简称为REs或regexes。是一些由字符和特殊符号组成的规则字符串。因此能按某种模式匹配一个有相似特征的字符串的集合,也能按某模式匹配一系列有相似特征的字符串。

Python自带一个正则表达式模块(re模块),通过这个模块可以查找、提取、替换一段有规律的信息。

使用正则表达式基本步骤:

寻找规律——用正则符号表示规律——依据规律提取信息

对象=re.compile(pattern[, flag])

pattern:正则表达式,flag:匹配模式

findall:遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。即能够以列表的形式返回所有满足要求的字符串。findall的函数使用方法:

re.findall(pattern, string[,flags=0])

该匹配是从左到右有序地返回。如果无匹配,返回空列表。

使用正则表达式时,常常用到一些特定的字符类,字符集合,数字集合等等,可以使用预定义字符集的缩写形式。


正则表达式预定义字符类匹配

使用正则表达式时,常常用到一些特定的字符类,字符集合,数字集合等等,可以使用预定义字符集的缩写形式。

\d 匹配任何十进制数,它相当于类 [0-9]

\D 匹配任何非数字字符,它相当于类[^0-9]

\s 匹配任何空白字符,它相当于类[\t\n\r\f\v]

\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]

\w匹配任何字母数字字符,它相当于类[a-zA-Z0-9_]

\W匹配任何非字母数字字符,它相当于类[^a-zA-Z0-9_]

正则表达式重复限定匹配


pattern*: 允许pattern模式重复0次或多次。

pattern?: 允许pattern模式重复0次或1次。

pattern+: 允许pattern模式重复1次或多次。

pattern{m,n}: 允许pattern模式重复m~n次。

pattern{m,}: 允许pattern模式至少重复m次。

pattern{m}: 允许pattern模式重复m次。