【发布时间】:2022-12-15 13:56:08
【问题描述】:
我给出了输出字符串的 sn-p 如下:
1b 16 PM1733A_384_SED S657NE0R400049 MPP94E5Q 12 0 1BF1F72B0 99.9% 0208 Samsung PM1733a 3.84TB 1-WPD-SED
2b 17 PM1733_384_SED LPNE0M900631 EPK9DE5Q --EMT-- 1BF1F72B0 0.0% 0208 Samsung PM1733 3.84TB 1-WPD-SED
1b 18 PM1733A_30T_SED S6UANE0RB00321 MPP95E5Q --PNP-- DAFA00000 0.0% 0208 Samsung PM1733a 30.72TB 1-WPD-SED Discovered PNP
2b
我想创建一个匹配上述输出的模式。
如果您在第一行看到列 [6,7],则输出为“12 0”。在第二行中,输出是第 6 列中的“--EMT--”,在第三行中是--PNP--。我能够分别为第一行或第二行/第三行创建模式。但是有没有办法我们可以创建 3 行的模式?
pattern = r'\s+\d\w\s+[0-9A-F]*\s+[A-Z0-9]*_[A-Z0-9]*_[A-Z]*\s+[A-Z0-9]*\s+[A-Z0-9]*\s+[0-9]*\s+[0-9]\s+[A-Z0-9]*\s+[0-9][0-9].[0-9]%\s+[0-9]{4}\s+[A-Za-z]*\s+'
【问题讨论】:
-
你确定你需要一个正则表达式吗?看起来使用 string.split 和基于规则的处理会更容易。
-
另外,您知道您可以为这些列期望哪种值吗?例如,如果 0 是具有 1BF1F72B0 的列的有效值,则结果不明确。
-
是的,我使用了拆分新行选项并且能够得到这些行。但是从正则表达式中,是否有可能获得这种情况的“模式”?