2015-05-19 84 views
0

我的字符串是這樣的:在字符串中提取數蟒蛇正則表達式

<tr id="xyz21" style="" class="standard"> 

當我通過網上正則表達式助手網站上運行我正則表達式,pythex.org,我得到了我想要;只有數字「21」。該網站說:

匹配捕捉「21」

下面是我用正則表達式:

<tr id="xyz(.*?)" 

然而,當我在我的Python 3腳本中使用此相同的正則表達式,我得到的更多。結果如下:

>>> import re 
>>> x = '<tr id="xyz21" style="" class="standard">' 
>>> num = re.search('<tr id="xyz(.*?)"', x).group() 
>>> print(num) 
<tr id="xyz21" 

最終,我想要的是創建一個值爲「21」的變量。順便說一句,我使用正則表達式的實際字符串比我所顯示的要長很多。實際上這是一個小文件。爲了更容易理解,我簡化了示例。有任何想法嗎?

回答

1

您需要添加一個參數:

re.search('<tr id="xyz(.*?)"', x).group(1) 

documentation指出,

如果有一個參數,結果是一個字符串;如果 是多個參數,則結果爲每個 參數帶有一個項目的元組。沒有參數,group1默認爲0(返回整個比賽 )。如果groupN參數爲零,則相應的返回值 是整個匹配字符串;如果它在包含範圍 [1..99]中,則它是與相應的括號內的 組匹配的字符串。