<p>埃文·福斯马克已经给出了一个很好的答案。这只是更多的信息。</p>
<p>你有这句台词:</p>
<pre><code>pattern = "6 of(.*)fans"
</code></pre>
<p>一般来说,这不是一个好的正则表达式。如果输入文本为:</p>
<p>“全银河99个粉丝中的6个”</p>
<p>然后匹配组(括号内的内容)将是:</p>
<p>“全银河99个粉丝”</p>
<p>所以,我们想要一个模式,它能抓住你想要的东西,即使是像上面这样愚蠢的输入文本。</p>
<p>在这种情况下,是否匹配空白并不重要,因为当将字符串转换为整数时,空白将被忽略。但是让我们写一个忽略空白的模式。</p>
<p>使用<code>*</code>通配符,可以匹配长度为零的字符串。在这种情况下,我认为您总是需要一个非空的匹配,所以您需要使用<code>+</code>来匹配一个或多个字符。</p>
<p>Python提供了非贪婪匹配,因此可以用它重写。带有正则表达式的旧程序可能没有非贪心匹配,因此我还将给出一个不需要非贪心的模式。</p>
<p>所以,非贪婪模式:</p>
<pre><code>pattern = "6 of\s+(.+?)\s+fans"
</code></pre>
<p>另一个:</p>
<pre><code>pattern = "6 of\s+(\S+)\s+fans"
</code></pre>
<p><code>\s</code>表示“任何空白”,将匹配一个空格、一个制表符和一些其他字符(例如“表单源”)。<code>\S</code>表示“任何非空白区域”,并匹配任何{<cd3>}将<em>不</em>匹配的内容。</p>
<p>第一个模式比第一个输入文本的模式要好:</p>
<p>“全银河99个粉丝中的6个”</p>
<p>它将返回一个匹配组,该组只有<code>99</code>。</p>
<p>但试试其他愚蠢的输入文本:</p>
<p>“99个狂热粉丝中的6个”</p>
<p>它将返回一个匹配的<code>99 crazed</code>组。</p>
<p>第二种模式根本不匹配,因为“疯狂”一词不是“粉丝”一词。</p>
<p>嗯。这里有最后一个模式,即使是愚蠢的输入文本,也应该总是做正确的事情:</p>
<pre><code>pattern = "6 of\D*?(\d+)\D*?fans"
</code></pre>
<p><code>\d</code>匹配任何数字(<code>'0'</code>到<code>'9'</code>)。<code>\D</code>匹配任何非数字。</p>
<p>这将成功匹配任何远程非二义性的内容:</p>
<p>“全银河99个粉丝中的6个”</p>
<p>匹配组将是<code>99</code>。</p>
<p>“99个狂热粉丝中的6个”</p>
<p>匹配组将是<code>99</code>。</p>
<p>“99 41个粉丝中的6个”</p>
<p>它不匹配,因为里面有第二个号码。</p>
<p>要了解有关Python正则表达式的更多信息,可以阅读<a href="http://www.amk.ca/python/howto/regex/" rel="nofollow noreferrer">various</a><a href="http://diveintopython.net/regular_expressions/index.html" rel="nofollow noreferrer">web</a><a href="http://docs.python.org/library/re.html" rel="nofollow noreferrer">pages</a>。为了快速提醒您,在Python解释器中,请执行以下操作:</p>
<pre><code>>>> import re
>>> help(re)
</code></pre>
<p>当你从网页上“刮”文本时,你有时可能会碰到HTML代码。一般来说,正则表达式不是忽略HTML或XML标记的好工具(请参见<a href="https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454">here</a>);最好使用<a href="http://www.crummy.com/software/BeautifulSoup/" rel="nofollow noreferrer">Beautiful Soup</a>解析HTML并提取文本,然后使用正则表达式获取真正需要的文本。</p>
<p>我希望这是有趣和/或教育。</p>