首页 > 编程问答 >python 正则表达式匹配一行中的多个单词而不转到下一行

python 正则表达式匹配一行中的多个单词而不转到下一行

时间:2024-07-30 03:52:26浏览次数:9  
标签:python regex

我正在编写一个解析器来解析以下输出:

    admin@str-s6000-on-5:~$ show interface status Ethernet4
      Interface        Lanes    Speed    MTU         Alias    Vlan    Oper    Admin            Type    Asym PFC
---------------  -----------  -------  -----  ------------  ------  ------  -------  --------------  ----------
      Ethernet4  29,30,31,32      40G   9100  fortyGigE0/4   trunk      up       up  QSFP+ or later         off
PortChannel0001          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0002          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0003          N/A      40G   9100           N/A  routed      up       up             N/A         N/A
PortChannel0004          N/A      40G   9100           N/A  routed      up       up             N/A         N/A

我尝试编写一个正则表达式来匹配下面的所有字段

(\S+)\s+([\d,]+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+([up|down])+\s+([up|down]+)\s+([\w\s+?]+)\s+(\S+)

我能够正确进入管理列。列 Type 包含多个单词,因此我使用了模式 ([\w\s+?]+) 希望它能够匹配由一个空格分隔的多个工作,其中 + 是可选的,后跟 (\S+) 来匹配最后一列。我面临的问题是,正则表达式 ([\w\s+?]+) 生成多行,它给我一个如下输出

Ethernet4 29,30,31,32 40G 9100 fortyGigE0/4 trunk up up QSFP+ or later off PortChannel0001 N/A

我看到 \s 也与新行匹配。如何限制它不匹配新行?有人可以帮我澄清一下吗。

我查看了这个空格 正则表达式以查找由空格分隔的一个或多个单词 但这也对我没有帮助。有人可以帮助我更好地理解这一点吗?


遇到的问题是 \s 可以匹配任何空白字符,包括换行符。要仅匹配同一行内的空格,请使用 [ \t] 来匹配空格或制表符。

以下是修改后的正则表达式:

(\S+)\s+([\d,]+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\S+)\s+([up|down])\s+([up|down]+)\s+([\w\s\+]+)\s+(\S+)

解释:

  • (\S+) :匹配一个或多个非空白字符,捕获到组 1。
  • \s+ :匹配一个或多个空白字符。
  • ([\d,]+) :匹配一个或多个数字或逗号,捕获到组 2。
  • \s+ :匹配一个或多个空白字符。
  • (\S+) :匹配一个或多个非空白字符,捕获到组 3。
  • \s+ :匹配一个或多个空白字符。
  • (\d+) :匹配一个或多个数字,捕获到组 4。
  • \s+ :匹配一个或多个空白字符。
  • (\S+) :匹配一个或多个非空白字符,捕获到组 5。
  • \s+ :匹配一个或多个空白字符。
  • (\S+) :匹配一个或多个非空白字符,捕获到组 6。
  • \s+ :匹配一个或多个空白字符。
  • ([up|down]) :匹配 "up" 或 "down",捕获到组 7。
  • \s+ :匹配一个或多个空白字符。
  • ([up|down]+) :匹配一个或多个 "up" 或 "down",捕获到组 8。
  • \s+ :匹配一个或多个空白字符。
  • ([\w\s\+]+) :匹配一个或多个字母数字字符、空格或加号,捕获到组 9。 这部分已更改以包含空格和加号。
  • \s+ :匹配一个或多个空白字符。
  • (\S+) :匹配一个或多个非空白字符,捕获到组 10。

通过使用此正则表达式,应该能够在不跨行的情况下匹配所有字段。

标签:python,regex
From: 78808725

相关文章

  • 使用 Python 平滑和对称不规则形状和曲线
    我需要完成三项任务:正则化曲线曲线的对称性完成不完整的曲线例如,这里是输入和预期的输出图像:输入输出|||在一般设置中,形状可以由任何SVG曲线基元(贝塞尔曲线、直线、弧线)表示。为了统一表示,示例包含曲线的折线近似。这些折线保存为......
  • 在Python中通过绝对路径引用数据文件夹
    我有一个大型python项目,其中数据太大,无法每次都以相同的方式共享。不同的人可能会使用网络位置或将某些内容复制到本地驱动器。该路径由不同子文件夹中的脚本和笔记本使用。例如,我将创建一个config.py来定义数据文件夹的路径。importsyssys.path.append('../'......
  • python三天速成记(看完你就会)day3 满满干货~
    续上文啦~EXCEL表的操作上一篇文章讲了怎么读取和操作txt和csv文档,但其实我们生活中还有一个常用的文本格式那就是excel文件,特别是在对大量数据进行处理的时候。excel文件的用处和广泛。其实在python中有很多库可以处理excel文件,但是本文主要介绍使用最实用最广泛的库pan......
  • Python输入验证改进的其他方式
    题目[题目来源:Python编程快速上手——让繁琐工作自动化(第二版)第三章实践项目,下面的解答程序为我自己完成的,仅供参考。]编写一个名为collatz()的函数,他有一个名为number的参数。如果参数是偶数,那么collatz()就输出number//2,并返回该值。如果参数是奇数,那么collatz()就......
  • Python的PyInputPlus模块
    PyInputPlus模块简介PyInputPlus模块的功能:PyInputPlus模块是一个Python第三方模块,需要自己对它进行安装。包含与input()函数类似的、用于多种数据(如日期、数字、电子邮箱地址等)的函数。如果,用户输入了无效的内容,例如格式错误的日期或超过预期范围的数字,那么PyInputPlus模......
  • 用Python实现二进制搜索(二分查找)
    二进制搜索(binarysearch,又称二分搜索)是一种快速有效的搜索方法,用于搜索有序列表中的元素。importmathdefbinary_search(sorted_list,target):"""在有序列表sorted_list中查找目标值target的位置使用二分查找算法"""lower_bound=0#初始......
  • 超详细Python教程——使用Hexo搭建自己的博客
    使用Hexo搭建自己的博客对于一个程序员来说,搭建一个属于自己的博客平台是非常有意义的事情。首先,博客可以记录自己的成长历程,也是对自己一段时间学习和工作的总结和沉淀;其他,通过博客可以营销自己,增强自己在互联网或行业内的影响力,为将来更好的职业生涯打一个坚实的基础。前......
  • 超详细Python教程——玩转PyCharm
    玩转PyCharmPyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补全、单元测试、版本控制等等。此外,P......
  • 2024年华为OD机试真题-找出作弊的人-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】  题目描述公司组织了一次考试,现在考试结果出来了,想看一下有没人存在作弊行为,但是员工太多了,需要先对员工进行一次过滤,再进一步确定是否存在作弊行为。过滤的规则为:找到分差最小的员工ID对(p1,p2)列表,......
  • Shopee虾皮api python获取虾皮购物平台的商品数据信息 数据采集
    虾皮购物(英语:Shopee)是一个电商平台,总公司设在新加坡,归属于SeaGroup(之前称之为Garena),该企业于2009年由李小冬(ForrestLi)创办。虾皮购物于2015年初次在新加坡推出,现阶段已拓展到马来西亚、泰国、印度尼西亚、越南和菲律宾。虾皮购物为全球华人地区的客户提供线上购物和销售......