title: I don't get why this URL matching regex isn't working
body: <p>I'm trying to match Linux kernel amd64 deb hrefs from a raw HTML string, using this regular expression:</p>
  
  <pre><code>r'(?&lt;=href=")linux-.*?_amd64\.deb(?=")'
  </code></pre>
  
  <p>The kind of urls I'm trying to match look like this:</p>
  
  <pre><code>&lt;a href="linux-headers-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_amd64.deb"&gt;
  </code></pre>
  
  <p>However, I only want to extract what is between the <code>"</code>s inside of the <code>href</code> attribute.
  The above regex does match the first href correctly, and then matches a bunch of stuff, including markup.
  Removing the <code>_amd64</code> from the regex makes it match in fact only URLs, but of course, it doesn't filter out i386 debs:</p>
  
  <pre><code>r'(?&lt;=href=")linux-.*?\.deb(?=")'
  </code></pre>
  
  <p>Here's the raw HTML code I'm applying the regex on:</p>
  
  <pre><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"&gt;
  &lt;html&gt;
      &lt;head&gt;
          &lt;title&gt;Index of /~kernel-ppa/mainline/v3.16-rc1-utopic&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
          &lt;h1&gt;Index of /~kernel-ppa/mainline/v3.16-rc1-utopic&lt;/h1&gt;
          &lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;img src="/icons/blank.gif" alt="[ICO]"&gt;&lt;/th&gt;&lt;th&gt;&lt;a href="?C=N;O=D"&gt;Name&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href="?C=M;O=A"&gt;Last modified&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href="?C=S;O=A"&gt;Size&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href="?C=D;O=A"&gt;Description&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th colspan="5"&gt;&lt;hr&gt;&lt;/th&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/back.gif" alt="[DIR]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="/~kernel-ppa/mainline/"&gt;Parent Directory&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td align="right"&gt;  - &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/text.gif" alt="[TXT]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="0001-base-packaging.patch"&gt;0001-base-packaging.patch&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:35  &lt;/td&gt;&lt;td align="right"&gt; 14M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/text.gif" alt="[TXT]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="0002-debian-changelog.patch"&gt;0002-debian-changelog.patch&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:35  &lt;/td&gt;&lt;td align="right"&gt;333K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/text.gif" alt="[TXT]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="0003-configs-based-on-Ubuntu-3.15.0-7.12.patch"&gt;0003-configs-based-on-Ubuntu-3.15.0-7.12.patch&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:35  &lt;/td&gt;&lt;td align="right"&gt; 51K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILD.LOG"&gt;BUILD.LOG&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt;7.1M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILD.LOG.amd64"&gt;BUILD.LOG.amd64&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt;2.3M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILD.LOG.armhf"&gt;BUILD.LOG.armhf&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt;597K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILD.LOG.binary-headers"&gt;BUILD.LOG.binary-headers&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt; 22K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILD.LOG.i386"&gt;BUILD.LOG.i386&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt;2.3M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="BUILT"&gt;BUILT&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:25  &lt;/td&gt;&lt;td align="right"&gt;108 &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="CHANGES"&gt;CHANGES&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:35  &lt;/td&gt;&lt;td align="right"&gt;744K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="CHECKSUMS"&gt;CHECKSUMS&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;09-Jun-2015 11:36  &lt;/td&gt;&lt;td align="right"&gt;3.1K&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="CHECKSUMS.gpg"&gt;CHECKSUMS.gpg&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;09-Jun-2015 11:36  &lt;/td&gt;&lt;td align="right"&gt;490 &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="COMMIT"&gt;COMMIT&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;29-May-2015 11:09  &lt;/td&gt;&lt;td align="right"&gt; 51 &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/hand.right.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="README"&gt;README&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;12-Jun-2015 13:45  &lt;/td&gt;&lt;td align="right"&gt;622 &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="SOURCES"&gt;SOURCES&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;12-Jun-2015 13:45  &lt;/td&gt;&lt;td align="right"&gt;237 &lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-headers-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_amd64.deb"&gt;linux-headers-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_amd64.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:55  &lt;/td&gt;&lt;td align="right"&gt;1.1M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-headers-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_i386.deb"&gt;linux-headers-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_i386.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:15  &lt;/td&gt;&lt;td align="right"&gt;1.0M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-headers-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_amd64.deb"&gt;linux-headers-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_amd64.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:56  &lt;/td&gt;&lt;td align="right"&gt;1.1M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-headers-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_i386.deb"&gt;linux-headers-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_i386.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:17  &lt;/td&gt;&lt;td align="right"&gt;1.0M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-headers-3.16.0-031600rc1_3.16.0-031600rc1.201406160035_all.deb"&gt;linux-headers-3.16.0-031600rc1_3.16.0-031600rc1.201406160035_all.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:36  &lt;/td&gt;&lt;td align="right"&gt; 12M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-image-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_amd64.deb"&gt;linux-image-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_amd64.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:55  &lt;/td&gt;&lt;td align="right"&gt; 51M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-image-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_i386.deb"&gt;linux-image-3.16.0-031600rc1-generic_3.16.0-031600rc1.201406160035_i386.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:15  &lt;/td&gt;&lt;td align="right"&gt; 51M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-image-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_amd64.deb"&gt;linux-image-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_amd64.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 04:56  &lt;/td&gt;&lt;td align="right"&gt; 51M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;td valign="top"&gt;&lt;img src="/icons/unknown.gif" alt="[   ]"&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="linux-image-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_i386.deb"&gt;linux-image-3.16.0-031600rc1-lowlatency_3.16.0-031600rc1.201406160035_i386.deb&lt;/a&gt;&lt;/td&gt;&lt;td align="right"&gt;16-Jun-2014 05:17  &lt;/td&gt;&lt;td align="right"&gt; 51M&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
              &lt;tr&gt;&lt;th colspan="5"&gt;&lt;hr&gt;&lt;/th&gt;&lt;/tr&gt;
          &lt;/table&gt;
          &lt;address&gt;Apache/2.2.22 (Ubuntu) Server at kernel.ubuntu.com Port 80&lt;/address&gt;
      &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>I'm using <code>re.findall(pattern, rawHTMLString)</code> for this. What is wrong with the regex?</p>