擅长:python、mysql、java
<p>另一个在一个步骤中提取<code>H</code>和<code>M</code>的选项,这里使用<code>(?:(?P<H>\d+)H)?(?:(?P<M>\d+)M)?</code>将{<cd1>}和{<cd2>}捕获为命名组;要避免由于两个组都是可选的而匹配空字符串,请在模式的开头添加一个前瞻性断言{<cd6>}:</p>
<pre><code>df = pd.DataFrame({'A': ['XXX1H30M', 'XXX45M', 'XXX2H', 'XXX']})
df.A.str.extract(r'(?=\d+H|\d+M)(?:(?P<H>\d+)H)?(?:(?P<M>\d+)M)?', expand=True).fillna(0)
# H M
#0 1 30
#1 0 45
#2 2 0
#3 0 0
</code></pre>
<p>这比单独提取要快一些:</p>
^{pr2}$