首页 > 解决方案 > 正则表达式特定匹配

问题描述

想要FOC2345N1UG从以下输入中精确过滤。我(S\/N:\s\s\s(\S+))在 Python 中使用过这个正则表达式。我正在获取所有不是必需的。

NODE module 0/RSP0/CPU0  ASR 9001, Route Switch Processor with 8GB memory
     MAIN:  board type 0x100401
      S/N:   FOC21456NKN7
      Top Assy. Number:   00-0000-00
      PID:   ASR9001-RP
      HwRev (UDI_VID):   V01
      Chip HwRev: V1.0
      New Deviation Number: 0
     CLEI:
      Board State : IOS XR RUN
      PLD:    Motherboard: N/A, Processor version: 0x8023 (rev: 3.0), Power: N/A
      MONLIB: QNXFFS Monlib Version 3.3
      ROMMON: Version 3.4(20160331:102636) [ASR9K ROMMON]
      Board FPGA/CPLD/ASIC Hardware Revision:
       IntCtrl  : V0.0
       USB0  : V17.0
       ClkCtrl  : V0.0
       CPUCtrl  : V0.0
       MLANSwitch  : V0.0
       EOBCSwitch  : V2.0
       LIU  : V0.0
       YDTI  : V0.0
       PHY  : V0.0
       CBC (active partition)  : v22.114
       CBC (inactive partition)  : v22.114
NODE fantray 0/FT0/SP  ASR-9001 Fan Tray Ver 2
MAIN:  board type 0x900409
        S/N:   FOC21456NTQF
        Top Assy. Number:   68-5333-03
        PID:   ASR-9001-FAN-V2
        HwRev (UDI_VID):   V03
       Chip HwRev: V1.0
       New Deviation Number: 0
       CLEI:  IPUCBLBBAA
       Vendor ID: 5
       PLD:    Motherboard: N/A, Processor version: N/A, Power: N/A
      Board FPGA/CPLD/ASIC Hardware Revision:
      CBC (active partition)  : v24.115
      CBC (inactive partition)  : v24.115
NODE module 0/0/CPU0  ASR 9001, Modular Line Card
MAIN:  board type 0xf10402
      S/N:   FOC2124NL345L
      Top Assy. Number:   00-0000-00
      PCA:   73-14312-08
      PID:   ASR9001-LC
      HwRev (UDI_VID):   V01
      Chip HwRev: V1.0
      New Deviation Number: 0
      CLEI:
         Board State : IOS XR RUN
         PLD:    Motherboard: N/A, Processor version: 0x8023 (rev: 3.0), Power: N/A
         ROMMON: Version 3.4(20160331:133429) [ASR9K ROMMON]
         Board FPGA/CPLD/ASIC Hardware Revision:
         NP0  : V4.194
         NP1  : V4.194
         FIA0  : V0.2
         FIA1  : V0.2
         X-Bar  : V1.5
         CPUCtrl  : V1.18
         FabArbiter  : V0.0
         PortCtrl  : V1.18
         PHYCtrl  : V1.18
         ClkCtrl  : V1.18
         PHY0  : V0.4(HwRev) V8.0(FwRev)     V8.0(SwRev)
         DBCtrl  : V2.10
         Power Sequencer0  : V0.0
         Power Sequencer1  : V0.0
         Power Sequencer2  : V0.0
         Modular Linecard Daughter board  : V1.0
         CBC (active partition)  : v23.114
         CBC (inactive partition)  : v23.114

SPA 0/0/0 : ASR 9000 4-port 10GE Modular Port Adapter
 MAIN:  board type 0237
            68-5885-01 rev B0
            dev N/A
             S/N FOC2346NHB7
           PCA:   73-17858-01 rev N/A
           PID:   A9K-MPA-4X10GE
           VID:   V06
           CLEI:  IPUIBRDRAF
            Board State : OK
            FPD Software Revision:
SPA 0/0/1 : ASR 9000 4-port 10GE Modular Port Adapter
 MAIN:  board type 0237
            68-5885-01 rev B0
           dev N/A
           S/N FOC22345NH71
        PCA:   73-17858-01 rev N/A
        PID:   A9K-MPA-4X10GE
        VID:   V06
        CLEI:  IPUIBRDRAF
        Board State : OK
        FPD Software Revision:
 NODE power-module 0/PS0/M0/SP  ASR-9001 AC Power Supply
MAIN:  board type 0xf00404
       S/N:   ART22784X093
       Top Assy. Number:   341-0424-01
       PID:   A9K-750W-AC
       HwRev (UDI_VID):   V01
       Chip HwRev: V0.0
          New Deviation Number: 0
          CLEI:  IPUPAJAAAA
          Board State : PRESENT
               PLD:    Motherboard: N/A, Processor version: N/A, Power: N/A
               Board FPGA/CPLD/ASIC Hardware Revision:
 NODE power-module 0/PS0/M1/SP  ASR-9001 AC Power Supply
MAIN:  board type 0xf00404
         S/N:   ART21274X095
         Top Assy. Number:   341-0424-01
         PID:   A9K-750W-AC
         HwRev (UDI_VID):   V01
         Chip HwRev: V0.0
         New Deviation Number: 0
         CLEI:  IPUPAJAAAA
            Board State : PRESENT
            PLD:    Motherboard: N/A, Processor version: N/A, Power: N/A
          Board FPGA/CPLD/ASIC Hardware Revision:
 Rack 0 - ASR-9001 Chassis
           RACK NUM: 0
            S/N:   FOC2345N1UG
            PID:   ASR-9001
            VID:   V07
            Desc:  ASR-9001 Chassis
            CLEI:  IPMDX00BR

标签: regexpython-3.x

解决方案


使用re.S标志与 reg 一起使用

/ASR-9001 Chassis.+S\/N:\s+([A-Z\d]+)/ 

这会找到您的目标标题,跳过所有内容直到下一个S/N:,然后抓取下一个大写字母和数字字符序列。

>>> import re    
>>> re.search(r"ASR-9001 Chassis.+S\/N:\s+([A-Z\d]+)", data, re.S).group(1)
'FOC2345N1UG'

我注意到您的一些序列号中缺少:s 并且数据通常格式松散,因此您可能需要S\/N:?根据您的用例将其设为可选并进行其他调整。


推荐阅读