在字符串中提取数蟒蛇正则表达式
问题描述:
我的字符串是这样的:在字符串中提取数蟒蛇正则表达式
<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]中,则它是与相应的括号内的 组匹配的字符串。