<p>您可以使用<a href="http://www.regular-expressions.info/lookaround.html#lookahead" rel="nofollow noreferrer">positive look-ahead</a>来匹配后面跟有其他内容的内容。要匹配系数,可以使用:</p>
<pre><code>>>> s = '3x3+6x2+2x1+8x0'
>>> re.findall(r'\d+(?=x)', s)
['3', '6', '2', '8']
</code></pre>
<p>根据<a href="http://docs.python.org/library/re.html" rel="nofollow noreferrer">^{<cd1>}</a>模块的文档:</p>
<blockquote>
<p>(?=...)
Matches if ... matches next, but doesn’t consume any of the string.
This is called a lookahead assertion.
For example, Isaac (?=Asimov) will
match 'Isaac ' only if it’s followed
by 'Asimov'.</p>
</blockquote>
<p>对于指数,可以使用<a href="http://www.regular-expressions.info/lookaround.html#lookbehind" rel="nofollow noreferrer">positive look-behind</a>:</p>
^{pr2}$
<p>同样,从文件中:</p>
<blockquote>
<p>(?<=...) Matches if the current position in the string is preceded by a match for
... that ends at the current position.
This is called a positive lookbehind
assertion. (?<=abc)def will find a
match in abcdef, since the lookbehind
will back up 3 characters and check if
the contained pattern matches.</p>
</blockquote>