Python正则表达式语法补充

本文介绍了正则表达式中两个常被忽视但至关重要的概念:非贪婪匹配和中括号的多种用法。通过实例演示了如何使用这些特性来更精确地匹配字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  补充两个初学时容易遗漏,但是对于实际应用Regex特别重要的知识点。

  .* :匹配任意字符的任意次(可用于过滤掉无关的文字)

  ?:非贪婪匹配

  下面看几个Demo:

  

 

  结果:

  boooooobbbby123

  bb

  

 

  结果:

  boooooobby123

  boooooobb

  

 

  结果:

  boooooobby123

  boooooob

  结果和贪婪算法有关,贪婪算法同时从两个方向(左,右)看匹配结果

  取消贪婪的方式,匹配到第一个b就返回:

  

 

  结果:

  boooooobbbby123

  boooooob

  

 

  结果:

  boooooobbbby123

  boooooobbbb

  

 

  结果:boooooobbbby123

  贪婪的思想:把满足匹配条件的字符串逐个都匹配一遍,返回最后一次匹配的结果

  举例:

  

 

  结果:bbb (因为最后一个满足条件的字符串是bbb)

  

 

  结果:bab (因为最后一个满足条件的字符串是bab,前一个满足条件的字符串是bbb)

  中括号[ ]三大用途:

  1.表示’或’关系,满足其中条件之一就能匹配成功

  2.定义区间[0-9] ,{ }:定义出现次数, 比如:\d{1,2} 出现1~2个数字,可以匹配日期中的月份,如’06’和’6’

  3.取消特殊含义的字符(小数点等)代表的意义,比如[. ]中的小数点,不再代表匹配任意字符,除了换行符,

  而代表单纯的小数点(可以用代码验证一下)

  提取汉字:[\u4E00-\u9FA5]

  

 

  结果:京大学

  出现上面结果的原因:受到了贪婪匹配的影响,匹配的第一个结果是南,第二个结果是京,

  返回最后一个结果京,在条件的前面加一个?,取消贪婪

  

 

  结果:南京大学

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值