如何使用re.compile搜索与公共区域的字符串中间
问题描述:
我搜索以下行从凌乱的HTML文件来:如何使用re.compile搜索与公共区域的字符串中间
<span id="fooPack1_xpl01_name11">150.00 FTL</span>
<span id="fooPack1_xpl02_name11">350.00 FTL</span>
<span id="fooPack1_xpl03_name11">250.00 FTL</span>
<span id="fooPack1_xpl04_name11">230.00 FTL</span>
我用BeautifulSoup并重新搜索和查找字符串:
tags = soup.find_all('span', id=re.compile(r'[fooPack1_xpl04_name11]\d+'))
但显然该字符串的公共部分是在开始和结束时,零件总是在中间变化。我该如何调整自己重新搜索模式,使其搜索“fooPack1_xpl” +(不同的字符串)+“_ name11”
感谢。
// //编辑
当我查询以下:
<span id="FullView1_spl02_Stack_4">03/04/12</span>
<span id="FullView1_spl03_Stack_4">01/03/11</span>
<span id="FullView1_spl04_Stack_4">02/25/02</span>
<span id="FullView1_spl05_Stack_4">07/16/04</span>
<span id="FullView1_spl01_Stack32">999.00 SPL</span>
<span id="FullView1_spl02_Stack82">150.00 XPP</span>
<span id="FullView1_spl03_Stack82">350.00 XPP</span>
<span id="FullView1_spl04_Stack82">450.00 XPP</span>
<span id="FullView1_spl05_Stack82">550.00 XPP</span>
<span id="FullView1_spl06_Stack82">650.00 XPP</span>
<span id="FullView1_spl07_Stack22">888.00 SPL</span>
<span id="FullView1_spl202_stckFriendName">Red Car</span>
<span id="FullView1_spl203_stckFriendName">Green Car</span>
<span id="FullView1_spl204_stckFriendName">Blue Car</span>
有:
foo=soup.findAll('span', id=re.compile(r'FullView1_spl\d+_stack82'))
我得到以下结果:
<span id="FullView1_spl204_stckFriendName">Blue Car</span>
<span id="FullView1_spl02_Stack82">150.00 XPP</span>
<span id="FullView1_spl03_Stack82">350.00 XPP</span>
<span id="FullView1_spl04_Stack82">450.00 XPP</span>
<span id="FullView1_spl05_Stack82">550.00 XPP</span>
<span id="FullView1_spl06_Stack82">650.00 XPP</span>
显然,我不需要顶级的e lement被检测到。所以这是唯一的问题。
答
你快到了。您要搜索fooPack1_xpl
,然后通过_name11
followd数字,所以怎么样:
re.compile(r'fooPack1_xpl\d+_name11')
请注意,我只是把预期将要对位的\d+
,和文字字符串你正在寻找其他方式。
你好,我想首先找到HTML文件中具有这些字符串的行,然后只提取“230.00 FTL”部分。原来的问题是在这里:http://stackoverflow.com/questions/10019954/extracting-a-specific-string-out-an-html-document但通过改变re.compile部分,它似乎并不像我越来越( – symbolix 2012-04-05 00:00:18
)当你已经问过重复问题时,问这个问题有什么意义?我回答了你问的具体问题,即如何匹配'fooPack1_xpl'+ digits +'_name11'。有关如何提取的细节已在上一个问题的答案中给出 – 2012-04-05 00:01:44
对不起,我只是不想让其他主题太忙,同时我有机会获得关于正则表达式库的更多信息 – symbolix 2012-04-05 15:08:49