擅长:python、mysql、java
<p>这将创建一个regex对象,beauthoulsoup的<code>findAll</code>方法检查您传递的是已编译的regex还是仅传递一个字符串-这样就避免了不必要的计算,并且可以使用简单的字符串比较。(Regex是相当占用cpu的操作)。在</p>
<p>在本例中,它被用于href属性以查找<code><a></code>标记的href属性内的任何位置<code>/wiki/</code>,否则只需传递一个字符串,它就必须匹配整个<code>href</code>属性。在</p>
<p>另一个使用它的例子是在第一个标记参数上,以regex <code>'^t[dh]$'</code>为例,您可以使用它来查找<code>td</code>或{<cd7>}标记。如果刚刚传递了一个regex字符串,它将查找<code><^t[dh]$></code>标记。在</p>
<p>{a1}</p>
<h2>一般来说你为什么要用重新编译在</h2>
<p>正如其他答案所说,这“编译”一个正则表达式,直到你调用<code>re.match</code>你的正则表达式只是一个字符串,<code>re</code>必须先转换它才能使用它,如果你传递一个字符串,它就会这样做,但这需要一些cpu时间。在</p>
<p>如果您要多次使用正则表达式,例如在循环中,那么每次转换将比只使用一次时占用更多的cpu,因此在循环之前执行并重新使用将使您的速度更快。在</p>
<p>实际上,<code>re</code>实际上是在幕后为您执行此操作,并“缓存”转换的对象,但这本身将增加少量的工作,因此可能仍需要比手动操作更长的时间。在</p>