2017-06-20 59 views
-1

我有一個Python字符串,它是在匹配索引被擊中

「A87-0000E000」的格式的文件數或「TRS-0000E000」

當我爲文檔編號解析一個單詞文檔時,有時候我會在字符串中獲取不需要的日期和其他信息。有沒有辦法匹配一個正則表達式,或從字符串末尾開始的子字符串,直到我得到一個數字?

字符串長度不固定,因爲它來自word文檔。

line = 'A97-5000E000 Date:' 

期望輸出

line = 'A97-5000E000' 

實施例2

line = 'TRS 4000E000 Page 1 of' 

期望輸出

line = 'TRS 4000E000' 

例3

line = 'TRS 3000231 Date: Dec, 12 20' 

期望輸出

line = 'TRS 3000231' 
+0

您能分享一個完整的輸入和預期的輸出嗎? –

+0

你如何知道文件名不是「TRS 4000E000第1頁,共5頁」?你沒有給出任何理由,爲什麼這不能是文件名。你有沒有反對簡單地尋找「網頁」或「日期」並將其用作分隔符?我知道你舉了一些例子,但你拒絕遵循這種格式的答案,所以我們需要更好的格式定義。 –

+0

該字符串來自Word文檔的標題,因此我可以確定它不是該文件的名稱。尋找網頁或日期實際上可能是最簡單的解決方案。謝謝! – ProfessionalNameForDisplayHere

回答

0

如果你想部分的長度是固定的,你可以用切片:
line[:12]

+0

字符串長度可能會有所不同,因爲我從文本文檔中獲取它。 – ProfessionalNameForDisplayHere

+0

格式在原始問題中給出的所有示例中都是固定長度的。 –

1

可以使用這個正則表達式([A-Z0-9]{3}[- ])([A-Z0-9]+)\s.*這可以:

  • ([A-Z0-9]{3}[- ])匹配一組大寫字母和長度爲3的degits的隨後-space
  • 其中matche大寫字母和degits下一空格

之前所以([A-Z0-9]+)秒組最終結果是組1和組2 $1$2

regex demo

+0

組(1)和組(0)之間有什麼區別。我有時看到組(0)匹配我的字符串,而有時組(1)。 – ProfessionalNameForDisplayHere

+0

@ProfessionalNameForDisplayHere我犯了一個錯誤,我的意思是'最終的結果是組1和組2 $ 1 $ 2' group1和group2 –