[英]Pattern Match in python
我給出了 output 字符串的片段如下:
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
我想創建一個匹配上面 output 的模式。
如果您在第一行看到列 [6,7],則 output 為“12 0”。 在第二行中,output 在第 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+'
如果您想將前 3 行匹配到您的模式僅匹配第一行的部分(沒有前導和尾隨空白字符):
\b\d\w\s+[\dA-F]+\s+[A-Z\d]+_[A-Z\d]+_[A-Z]+\s+[A-Z\d]+\s+[A-Z\d]+\s+(?:\d+\s+\d+|--[A-Z]+--)\s+[A-Z0-9]+\s+\d+\.\d%\s+\d{4}\s+[A-Za-z]+\b
添加的部分匹配:
(?:
備選方案的非捕獲組
\d+\s+\d+
匹配 1+ 個數字、1+ 個空白字符和 1+ 個數字|
要么--[AZ]+--
在--
之間匹配 1+ 個字符 AZ)
關閉非捕獲組\s+
匹配 1+ 個空白字符請參閱正則表達式演示。
請注意,在您的模式中,您使用*
之類的量詞,在這種情況下,它可以匹配零次或多次,因此_[A-Z0-9]*_
也將允許__
匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.