我的python re.sub有什么问题

时间:2011-06-17 07:02:25

标签: python regex

这是我的代码:

string ='''
{% emoji 'MONEY_BAG' %}<span style="color:#7F6C41;"><a href="{% mobile_url '/inventory/view_item/?category=weapon&inventory_id=%s' inventory_id %}">{{ item.name }}</a>を入手した!</span></span>


'''
a = r'''
{%\s+mobile_url\s+['"]{1}(/inventory/view_item/\?)[^'"]*['"]{1}\s+([^%}]+)\s+%}
'''

def aa(x):
    print x.group(1)
    print x.group(2)
    return ''

string = re.sub(a, aa, string)
print string

它显示:

{% emoji 'MONEY_BAG' %}<span style="color:#7F6C41;"><a href="{% mobile_url '/inventory/view_item/?category=weapon&inventory_id=%s' inventory_id %}">{{ item.name }}</a>を入手した!</span></span>

我想打印x.group(1)和x.group(2)

所以我该怎么做,

感谢

2 个答案:

答案 0 :(得分:3)

使用正则表达式从HTML中提取信息是个坏主意。使用HMTL Parser会更容易:http://docs.python.org/library/htmlparser.html

或者,如果您想抓取网页以获取更多信息,可能需要使用scrapy这是一个非常棒的网络抓取工具框架。

答案 1 :(得分:2)

a中的额外换行符导致正则表达式永不匹配

a = r'''{%\s+mobile_url\s+['"]{1}(/inventory/view_item/\?)[^'"]*['"]{1}\s+([^%}]+)\s+%}'''