python正则表达式中的括号匹配问题

作者:mdxy-dxy 时间:2023-07-26 01:36:24 

问题:

m = re.findall('[0-9]*4[0-9]*', '[4]')
可以匹配到4.
m = re.findall('([0-9])*4([0-9])*', '[4]')
匹配不到4.
这是为什么呢?PS,这个是一个简化的说明,我要用的正则比这个复杂,所以要用到(),表示一个序列的匹配。
补充一点,我放在notepad++中用的时候,两种写法都能匹配出来,不知道为什么python中就不行了。

答案:

python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()中的匹配。要想达到原来的匹配效果,就是把4匹配出来,有两种解决方法:

1.最外层加个大括号,变成:m = re.findall('(([0-9])*4([0-9])*)', '[4]'),返回结果的第一个元素就是匹配结果了。
2.去除()的匹配结果返回,在括号前面加入?:,变成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回结果就是要匹配的结果了。

标签:python,正则表达式,括号匹配
0
投稿

猜你喜欢

  • Python+OpenCV+pyQt5录制双目摄像头视频的实例

    2021-12-22 02:07:24
  • Mysql中复制详细解析

    2024-01-13 20:46:25
  • element-ui组件中input等的change事件中传递自定义参数

    2024-06-16 19:07:27
  • 解决Python spyder显示不全df列和行的问题

    2021-06-23 00:15:47
  • 简写一个的lightbox显示隐藏层效果(兼容)

    2010-07-23 20:02:00
  • 使用pycharm运行flask应用程序的详细教程

    2022-12-15 05:15:55
  • 基于事件冒泡、事件捕获和事件委托详解

    2024-04-28 09:43:33
  • 聊聊python中的循环遍历

    2022-06-17 23:44:43
  • MySQL中修改表结构时需要注意的一些地方

    2024-01-29 09:04:11
  • 在Python中使用defaultdict初始化字典以及应用方法

    2021-01-05 02:03:02
  • Oracle的约束介绍与约束维护

    2024-01-28 04:19:05
  • python获取外网ip地址的方法总结

    2022-11-09 18:40:06
  • oracle sys_connect_by_path 函数 结果集连接

    2009-07-12 18:48:00
  • 解析Mac OS下部署Pyhton的Django框架项目的过程

    2021-04-03 14:00:34
  • python爬取网易云音乐评论

    2021-02-23 11:23:02
  • Vue组件的使用及个人理解与介绍

    2024-05-09 15:13:52
  • Python入门篇之字典

    2022-09-24 23:53:47
  • 分享五个超实用Python脚本,减少垃圾软件负担

    2022-07-18 18:38:59
  • pytest实现测试用例参数化

    2023-12-10 19:01:21
  • Oracle中字符串连接的实现方法

    2024-01-15 11:59:24
  • asp之家 网络编程 m.aspxhome.com