zoukankan      html  css  js  c++  java
  • python正则表达式示例(五)

    竖线-匹配两者之一

    竖线表示 匹配 前者 或 后者 。

    特别要注意的是, 竖线在正则表达式的优先级是最低的, 这就意味着,竖线隔开的部分是一个整体

    比如 绿色|橙 表示 要匹配是 绿色 或者  ,

    而不是 绿色 或者 绿橙

    从下面的文本里面抓取 所有职位的薪资

    Python3 高级开发工程师 上海互教教育科技有限公司上海-浦东新区2万/月02-18满员
    测试开发工程师(C++/python) 上海墨鹍数码科技有限公司上海-浦东新区2.5万/每月02-18未满员
    Python3 开发工程师 上海德拓信息技术股份有限公司上海-徐汇区1.3万/每月02-18剩余11人
    测试开发工程师(Python) 赫里普(上海)信息科技有限公司上海-浦东新区1.1万/每月02-18剩余5人
    

     我们使用的表达式是 ([d.]+)万/每{0,1}月

    为什么这么写呢?

    [d.]+ 表示 匹配 数字或者点的多次出现 这就可以匹配像: 3 33 33.33 这样的 数字

    万/每{0,1}月 是后面紧接着的,如果没有这个,就会匹配到别的数字, 比如 Python3 里面的3。

    其中 每{0,1}月 这部分表示匹配 每月 每 这个字可以出现 0次或者1次。

    聪明的你能想到,还可以用什么来表示这个 每{0,1}月 吗?

    对啦,还可以用 每?月 因为问号表示 前面的字符匹配0次或者1次

    使用正则表达式切割字符串

    字符串 对象的 split() 方法只适应于非常简单的字符串分割情形。当你需要更加灵活的切割字符串的时候,就不好用了。

    比如,我们需要从下面字符串中提取武将的名字。

    我们发现这些名字之间, 有的是分号隔开 ,有的是逗号隔开,有的是空格隔开, 而且分割符号周围还有不定数量的空格

    names = '关羽; 张飞, 赵云,马超, 黄忠  诸葛亮'
    

      这时,最好使用正则表达式里面的 split 方法:

    import re
    
    names = '关羽; 张飞, 赵云,   马超, 黄忠  诸葛亮'
    
    namelist = re.split(r'[;,s]s*', names)
    print(namelist)
    

      正则表达式 [;,s]s* 指定了,分割符为 分号、逗号、空格 里面的任意一种均可,并且 该符号周围可以有不定数量的空格。

  • 相关阅读:
    JavaScript高级程序设计学习笔记--变量、作用域和内存问题
    JavaScript高级程序设计学习笔记--基本概念
    Silverlight 动画性能
    Silverlight动画之 Animation Easing
    Silverlight 动画详解
    WCF重写ServiceHost,实现独立配置文件
    WP8 双击返回键退出
    Asp.Net之自定义表达式构造器(ExpressionBuilder)
    通过configSource提高web.config配置灵活性
    C# 操作IIS方法集合
  • 原文地址:https://www.cnblogs.com/wxcx/p/12659539.html
Copyright © 2011-2022 走看看