2017-08-22 41 views
-1

我需要幫助的正則表達式在Python從文件中提取數字:Python的正則表達式多種格式

我有一個目錄

  • TOP GEAR 5X04.mkv
  • TOP GEAR 13X02四個文件.AVI
  • TOP GEAR 9X12.mkv的
  • 遊戲寶座S02E03.mkv

,這是我在Python正則表達式:

/.*(S[0-9]{2})E[0-9]{2}.*|.*([0-9]+)X[0-9]+.*/ 

,並返回:

1場

2場

匹配3

匹配4

  1. S02

在匹配2.2,我有3個,而不是13。我怎樣才能得到後者的嗎?有任何想法嗎 ?

我已經試過,但沒有在所有的工作:

/.*(S[0-9]{2})E[0-9]{2}.*|.*([0-9]{1,2})X[0-9]{1,2}.*/ 

link Pythex

感謝。

+0

如果你得到它的工作,你可以接受一個答案。 –

回答

0

嘗試應該匹配13懶惰位之前使.*,加入了?

/.*(S[0-9]{2})E[0-9]{2}.*|.*?([0-9]{1,2})X[0-9]{1,2}.*/ 
0

您正則表達式的第二部分沒有字母標記捕獲組的開始。你會想第一個數字之前,使用一個非貪婪.*?匹配,而不是貪婪版本.*

.*(S\d{2})E\d{2}.*|.*?(\d+)X\d+.* 

輸出:

Match 1 
1. None 
2. 5 
Match 2 
1. None 
2. 13 
Match 3 
1. None 
2. 9 
Match 4 
1. S02 
2. None 

Pythex link