gpt4 book ai didi

跨多行的python正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:41 24 4
gpt4 key购买 nike

我正在使用 python 和 pexpect 从一些 cisco 设备收集一些信息,并且在使用 REs 提取讨厌的小项目方面取得了很大的成功。恐怕我已经碰壁了。一些开关堆叠在一起,我已经在脚本中确定了这一点,并使用一个单独的例程来解析数据。如果开关堆叠,您会看到以下内容(从 sho ver 输出中提取)

Top Assembly Part Number        : 800-25858-06
Top Assembly Revision Number : A0
Version ID : V08
CLEI Code Number : COMDE10BRA
Hardware Board Revision Number : 0x01


Switch Ports Model SW Version SW Image
------ ----- ----- ---------- ----------
* 1 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
2 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
3 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
4 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M


Switch 02
---------
Switch Uptime : 11 weeks, 2 days, 16 hours, 27 minutes
Base ethernet MAC Address : 00:26:52:96:2A:80
Motherboard assembly number : 73-9675-15

当我遇到这个问题时,我需要为 4 的表中的每个提取开关编号和型号,(sw 可以忽略,但可以有 1 到 9 个开关)这是多行的事情让我成为我对其余的一切都很好。有什么想法吗?

好的,抱歉。我的正则表达式只是开始查看最后一组 - 直到..然后我不知道该去哪里!
-{10]\s-{10}(.+)切换

模型会改变,开关的数量也会改变,我需要捕获这个例子中的4行

*    1   52     WS-C3750-48P       12.2(35)SE5             C3750-IPBASE-M  
2 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
3 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M
4 52 WS-C3750-48P 12.2(35)SE5 C3750-IPBASE-M

但是每个开关都可以是不同的型号,并且可以在 1 到 9 之间。对于这个例子,理想情况下我想得到

*,1,WS-C3750-48P
,2,WS-C3750-48P
,3,WS-C3750-48P
,4,WS-C3750-48P

(星号表示大师)
但得到这些台词会让我走上正轨

最佳答案

要让 . 匹配任何字符,包括换行符,用 re.DOTALL 编译你的 RE在选项中(请记住,如果您有多个选项,请在它们之间使用 |,即位或运算符,以便组合它们)。

在这种情况下,我不确定您是否真的需要这个——为什么不需要类似的东西

re.findall(r'(\d+)\s+\d+\s+(WS-\S+)')

假设您识别“模型”的方式是它以 WS- 开头? findall 的一个结果和下一个结果之间会有换行符这一事实在这里不是问题。您能否准确解释如何识别“模型”以及为什么“多行”是一个问题?也许你想要 re.MULTILINE使 ^ 在每个行首匹配,通过对行首的一些引用来获取数据...?

关于跨多行的python正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com