正则表达式常用语法

所有正则表达式中不要留空格,否则会匹配失败。

() 圆括号:括号里的内容作为一组来处理;可以有多个匹配。 eg (com|cn|net)表示匹配com或cn或net。

[] 方括号:括号里的内容单个匹配。eg [^a-zA-Z0-9] 表示匹配所有非字母和数字。

{} 大括号:括号里的内容表示匹配词数。{2}, {2, }, {2, 5}分别表示匹配2次,匹配至少2次,匹配2次到5次。

  • 基础元素字符:
\d匹配数字 \D匹配任意非数字的字符
\w匹配字母或数字或下划线等单词字符等价于“[A-Za-z0-9_] \W匹配任意不是字母,数字,下划线的字符,等价于“[^A-Za-z0-9_]
\s匹配任意的空白符 \S匹配任意不是空白符的字符
.匹配除换行符以外的任意字符 [^aeiou]匹配除了aeiou这几个字母以外的任意字符
  • 位置元素字符:
\b匹配单词的开始或结束 \B匹配不是单词开头或结束的位置
^匹配字符串的开始   
$匹配字符串的结束   
  • 匹配次数字符:
重复零次或一次
+重复一次或更多次
*重复零次或更多次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
  • 其他:

转义字符: 使用\来取消这些字符的特殊意义。eg \. \* \\分别表示三个元素本身. * \。

分组:圆括号

或关系:|

  • 示例:需要提取文章中最高价格,其中包含最高价格的内容总结如下。
最高价格18.99万元,最高价格也不会超过二十万,最高价格也在不到十七万的价格,最高价格也不过16万元,最高价格约为295751元,最高价格飙到12799元时,因为它刷新了国产混动最高价格,145万的售价(告辞),最高价格的混动2.5L的版本官方售价是27.98万元,    从预售价格来看13万的最高价格。

通过分析得到:

两种句式:最高价格${price}和${price}最高价格;

价格三种表示方法:${小写数字}万、$(大写数字}万、${小写数字}元,

pt_1 = re.compile(r"最高价格\w{0,20}(,|,|.|)\w{0,20}((\d{2,3}(\.\d+|)|(一|二|三|四|五|六|七|八|九|十){2,3})万|\d{5,8}元)")

pt_2 = re.compile(r"((\d{2,3}(\.\d+|)|(一|二|三|四|五|六|七|八|九|十){2,3})万|\d{5,8}元)\w{0,10}最高价格")

所以,待提取文字内容的正则表达式为:

pt=re.compile(r"(最高价格\w{0,20}(,|,|.|)\w{0,20}((\d{2,3}(\.\d+|)|(一|二|三|四|五|六|七|八|九|十){2,3})万|\d{5,8}元)|((\d{2,3}(\.\d+|)|(一|二|三|四|>五|六| 七|八|九|十){2,3})万|\d{5,8}元)\w{0,10}最高价格)")

最终的价格值可用如下表达式:

pt_rst = re.compile(r"((\d{2,3}(\.\d+|)|(一|二|三|四|五|六|七|八|九|十){2,3})万|\d{5,8}元)",flags=re.I)

 

参考文献:

  1. 正则表达式全集
  2. 正则中圆括号()方括号[]大括号{}的区别和用法
  3. 正则表达式30分钟入门教程

  4. 通用正则表达式与python中的正则匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值