擅长:python、mysql、java
<p>从perlretut:</p>
<blockquote>
<p>If the groupings in a regexp are nested, $1 gets the group with the
leftmost opening parenthesis, $2 the next opening parenthesis, etc.</p>
</blockquote>
<p>来源:<a href="http://perldoc.perl.org/perlretut.html" rel="nofollow">http://perldoc.perl.org/perlretut.html</a></p>
<p>Python的regex引擎是基于Perl的,所以行为类似。在</p>
<p>所以:</p>
<p><code>a=(([-+]?(\d*[.])?\d+)</code>外部捕获组,即<code>2323.232323</code>==组1</p>
<p><code>a=(([-+]?(\d*[.])?\d+)</code>内部捕获组,即<code>(\d*[.])</code>,即<code>2323.</code>==第2组</p>
<p><code>b=([-+]?(\d*[.])?\d+)</code>外部捕获组,即<code>23.23</code>==组3</p>
<p>要获得所需的输出,请尝试以下操作:</p>
<pre><code>import re
s = "a=2323.232323 b=23.23 c=112 d=12"
pattern = r'a=([-+]?(\d*[.])?\d+) b=([-+]?(\d*[.])?\d+) c=([-+]?(\d*)([.]\d*)?)'
tobereplacedwith = r'thisisb=\3 thisisa=\1 thisisc=\6'
print re.sub(pattern, tobereplacedwith, s)
</code></pre>
<p>输出:</p>
^{pr2}$