<p>您可以将字符添加到捕获组中的字符类中,就像在模式<code>\[([A-Za-z0-9_♤♡♢♧, ]+)\]</code>中一样,或者使模式更具体一些:</p>
<pre><code>\[([A-Za-z0-9_][♤♡♢♧]?,\s*[A-Za-z0-9_][♤♡♢♧]?)]
</code></pre>
<p>模式匹配:</p>
<ul>
<li><code>\[</code>匹配<code>[</code></li>
<li><code>(</code>捕获<strong>第1组</strong>
<ul>
<li><code>[A-Za-z0-9_]</code>匹配列出的字符之一</li>
<li><code>[♤♡♢♧]?</code>可选地匹配列出的字符之一</li>
<li><code>,\s*[A-Za-z0-9_][♤♡♢♧]?</code>匹配逗号和与逗号之前相同的逻辑</li>
</ul>
</li>
<li><code>)</code>关闭组1</li>
<li><code>]</code>匹配<code>]</code></li>
</ul>
<p><a href="https://regex101.com/r/hi3PV6/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>比如说</p>
<pre><code>import pandas as pd
dfpot = pd.DataFrame({'Action':['Player[J♡, K♧] won the $5.40 main pot with a Straight', 'Player [5, 2] won the $21.00 main pot with a flush']})
dfpot['cards'] = dfpot['Action'].str.extract(r'\[([A-Za-z0-9_][♤♡♢♧]?,\s*[A-Za-z0-9_][♤♡♢♧]?)]', expand=False)
print(dfpot)
</code></pre>
<p>输出</p>
<pre><code> Action cards
0 Player[J♡, K♧] won the $5.40 main pot with a S... J♡, K♧
1 Player [5, 2] won the $21.00 main pot with a f... 5, 2
</code></pre>