regex - 正则表达式特定匹配
问题描述
想要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
解决方案
使用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:?
根据您的用例将其设为可选并进行其他调整。
推荐阅读
- python - 客观论点在 python 的 xgboost 中是如何工作的?
- javascript - CSS/JS 图像点击更改在多个设备上同步
- c++ - 更好的 CPU 运行时间,并且可以轻松修改以支持 GPU
- android - 从打开的应用列表中清除应用后,辅助功能服务无法显示 toast 或任何 UI 元素
- java - 在 Tomcat 中编辑 WAR 内的 Java 配置文件
- tinymce - TinyMCE - 在 H1 中按 Enter 后,文本方向自动更改为从左到右
- android - 自动完成不会显示下拉列表
- c++ - C++ Windows 中的原始套接字
- dart - 如何在 ImageCarousel 中传递 List?
- spring - @RequestBody 在 @RestController 中为空,用于 Spring Boot 1.2.1 中的发布请求