如何使用re.compile搜索与公共区域的字符串中间

如何使用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+,和文字字符串你正在寻找其他方式。

+0

你好,我想首先找到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

+0

)当你已经问过重复问题时,问这个问题有什么意义?我回答了你问的具体问题,即如何匹配'fooPack1_xpl'+ digits +'_name11'。有关如何提取的细节已在上一个问题的答案中给出 – 2012-04-05 00:01:44

+0

对不起,我只是不想让其他主题太忙,同时我有机会获得关于正则表达式库的更多信息 – symbolix 2012-04-05 15:08:49