在字符串中提取数蟒蛇正则表达式

问题描述:

我的字符串是这样的:在字符串中提取数蟒蛇正则表达式

<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”的变量。顺便说一句,我使用正则表达式的实际字符串比我所显示的要长很多。实际上这是一个小文件。为了更容易理解,我简化了示例。有任何想法吗?

您需要添加一个参数:

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

documentation指出,

如果有一个参数,结果是一个字符串;如果 是多个参数,则结果为每个 参数带有一个项目的元组。没有参数,group1默认为0(返回整个比赛 )。如果groupN参数为零,则相应的返回值 是整个匹配字符串;如果它在包含范围 [1..99]中,则它是与相应的括号内的 组匹配的字符串。