正则切勿将【.*?】过分连用

正则切勿将【.*?+】过分连用

很久不写正则了,很多内容都比较生疏了,重新在开始写的时候总是要查来查去,所以从现在开始记录一些日常正则使用的技巧,减少每次review成本。

本次出现的问题

由于工作的原因,需要匹配各种招聘网站上发布JD的内容,要将【岗位职责】和【任职要求】分开,于是我开始这么写pattern:

text = '1、根据销售部门中长期人才发展规划,构建区域人才培养机制及培训管理体系,推进部门梯队建设、领导力建设;|2、负责完善区域干部选拔、任命、晋升、淘汰管理机制,重点推进核心人才的发展管理体系建设;|3、负责区域招聘和人才配置优化等工作,保障骨干员工的稳定性;|4、负责落实推进公司绩效考核政策,提出激励计划和具体实施办法;|5、协助负责人进行团队建设规划、文化建设,营造良好的员工关系;|6、贯彻与推行集团总部的各项人力资源政策,确保人力资源管理工作的同步实现。|任职资格:|1、本科及以上学历,具备2年以上bp工作经验者优先;|2、3年以上大中型企业人力资源工作经验,具备相关职能模块全流程工作经验;|3、熟练使用Office办公软件,具备数据分析数据报表制作能力;|4、善于沟通协调,性格外向开朗,有一定抗压能力积极上进;|5、有整体的统筹及规划能力。'
requirements = '应聘条件|基本条件|职位要求|任职资格|任职要求'
pattern = rf'(.*)+({requirements})+(.*)+'

对pattern简单解释下:
其中分为三个部分
第一部分 【(.*)+】 为了匹配requirements前面的内容,思路是点(.)匹配任意字符,星号(*)匹配前一字符任意次,组合起来(.*)就是匹配任意字符任意个,而在此时我想匹配在requirements前面必须要有字符,所以就加了个加号(+),这就是错误的开始,一旦在后面加了加号,就会导致无限匹配,为什么呢,因为这回带来各种排列组合的匹配,例如现有字符"aaaaa",会被匹配成各种的排列组合【(aaaaa), (aaaa)(a), (aaa)(aa), (aaa)(a)(a), (aa)(aaa), (aa)(aa)(a) … 】参考 这里
第二部分和第三部分就不赘述了,第三部分也和第一部分犯了同样的错误。
当我写完这个正则,点击开始运行,此时此刻我的风扇原地起飞,顿时懵逼。查阅后才意识到这个问题,所以在使用正则的时候切勿将【.*+?】随性的组合使用,一定要想清楚,不过每一次试错都是学习的过程,记录此过程提醒自己和帮助其他和我犯一样错误的人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值