簡體   English   中英

python 中的模式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM