<p>您可能会发现为此使用命名捕获组很方便。您可以使用以下正则表达式来实现这一点</p>
<pre><code>r'^(?P<reg>[a-z]{3})(?P<env>\d)(?:(?P<xcon>[a-z]\d))?(?P<type>[a-z]{2})(?P<nbr>\d)'
</code></pre>
<p>对于问题中给出的两个示例字符串,正则表达式提供了以下结果</p>
<pre><code>Full match : "tor1er1"
Group `reg` : "tor"
Group `env` : "1"
Group `type` : "er"
Group `nbr` : "1"
</code></pre>
<p/>
<pre><code>Full match : "tor1x1ms1"
Group `reg` : "tor"
Group `env` : "1"
Group `xcon` : "x1"
Group `type` : "ms"
Group `nbr` : "1"
</code></pre>
<p><a href="https://regex101.com/r/gaprCz/2/" rel="nofollow noreferrer">Start your engine!</a></p>
<p>Python的正则表达式引擎执行以下操作</p>
<pre><code>^ : match beginning of string
(?P<reg>[a-z]{3}) : match 3 lc letters and save to
capture group 'reg'
(?P<env>\d) : match 1 digit and save to capture
group 'env'
(?P<xcon>[a-z]\d)? : match 1 lc, letter 1 digit, save to
capture group 'xcon', make optional
(?P<type>[a-z]{2}) : match 2 lc letters, save to
capture group 'type'
(?P<nbr>\d) : match 1 digit, save to
capture group 'nbr'
</code></pre>