用于在字符串中提取数字的python正则表达式

时间:2015-05-19 17:47:59

标签: python regex

我的字符串是这样的:

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

当我通过在线正则表达式帮助网站pythex.org运行我的正则表达式时,我得到了我想要的东西;只有数字&#34; 21&#34;。该网站说:

匹配捕获&#34; 21&#34;

这是我使用的正则表达式:

<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"

最终,我想要的是创建一个值为&#34; 21&#34;的变量。顺便说一下,我使用正则表达式的实际字符串比我显示的字符串长得多。实际上它是一个小文件。我简化了我的例子只是为了让它更容易理解。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要添加参数:

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

documentation注意到

  

如果只有一个参数,则结果为单个字符串;如果有   是多个参数,结果是一个元组,每个元素一个   论点。没有参数,group1默认为零(整个匹配   退回)。如果groupN参数为零,则返回相应的   value是整个匹配字符串;如果它在包容范围内   [1..99],它是匹配相应括号的字符串   基。