擅长:python、mysql、java
<p>可能你想要这样的东西:</p>
<pre><code>/^(Michael|Susan|Maria|Jack|Joe).*?(painters|actors).*?([P|K]a\w+).*$/gm
</code></pre>
<p><a href="https://regex101.com/r/gR8pM7/3" rel="nofollow">DEMO</a></p>
<p>PS:我打算<code>$k</code>作为一个变量,并用一个实际值替换它(在我的例子<code>P</code>),如果你的意思与我的答案不同,我也会修改regex。你知道吗</p>
<p><strong>警告</p>
<p>除非按长度(从最长到最小)对管道组中的条目进行排序,否则使用regex的每个解决方案都不会按预期工作。
在python中,使用如下内容:</p>
<p><code>persons.sort(lambda x,y: cmp(len(y), len(x)))</code></p>
<p>为什么?像这样的匹配组<code>(Maria|Joe|Jack|Mariano)</code>永远不会匹配字符串<code>Mariano</code>,因为它将首先匹配<code>Maria</code>,然后停止搜索,就像任何公共编程语言中的任何或组一样。你知道吗</p>