<p><strong>正则表达式模式</strong></p>
<pre><code>\b((?:[A-Z]\w+\s?)+)\s\(P[A-Z]
</code></pre>
<p>为了找到上述正则表达式模式的所有匹配项,我们可以使用<a href="https://docs.python.org/3/library/re.html#re.findall" rel="nofollow noreferrer">^{<cd1>}</a></p>
<pre><code>import re
text = """abcdefg Mark Jones (PP) etc etc
akslaskAS Taylor Daniel Lautner (PMB) blabla
etcetc Allan Stewart Konigsberg Farrow (PRTW)
"""
matches = re.findall(r'\b((?:[A-Z]\w+\s?)+)\s\(P[A-Z]', text)
</code></pre>
<hr/>
<pre><code>>>> matches
['Mark Jones', 'Taylor Daniel Lautner', 'Allan Stewart Konigsberg Farrow']
</code></pre>
<p><strong>正则表达式详细信息</strong></p>
<ul>
<li><code>\b</code>:防止部分匹配的单词边界</li>
<li><code>((?:[A-Z]\w+\s?)+)</code>:第一个捕获组
<ul>
<li><code>(?:[A-Z]\w+\s?)+</code>:非捕获组匹配一次或多次
<ul>
<li><code>[A-Z]</code>:匹配大写字母{<cd6>}到{<cd7>}之间的单个字母表</li>
<li><code>\w+</code>:匹配任意单词字符一次或多次</li>
<li><code>\s?</code>:将任何空白字符匹配零次或一次</li>
</ul>
</li>
</ul>
</li>
<li><code>\s</code>:匹配单个空白字符</li>
<li><code>\(</code>:按字面意思匹配字符<code>(</code></li>
<li><code>P</code>:按字面意思匹配字符<code>P</code></li>
<li><code>[A-Z]</code>:匹配大写字母{<cd6>}到{<cd7>}之间的单个字母表</li>
</ul>
<p>见在线<a href="https://regex101.com/r/yZNFEM/1" rel="nofollow noreferrer">^{<cd18>}</a></p>