擅长:python、mysql、java
<p>将<code>fruit_compile.search(myfavourite)</code>的结果保存到变量中。你知道吗</p>
<pre><code>finding = fruit_compile.search(myfavourite)
if finding:
doSomethingWithFruit(finding.group(0))
</code></pre>
<p>我注意到您已经<em>保存了<code>fruit_compile.search</code>的结果,但是只有在<em>检查第一个调用是否返回<code>None</code>之后。你知道吗</p>
<hr/>
<p>您已经在一条评论中阐明,您正在寻找与字符串匹配的替代模式。你知道吗</p>
<p>一种方法是通过使用<code>matchObject.groups()</code>找到正确替代方案的索引。它是一个元组,其中每个不匹配的组都是<code>None</code>。你知道吗</p>
<p>找到非<code>None</code>值的索引,就可以从原始水果列表中检索到正确的项目。这显然涉及到一种或另一种方式的迭代,这与你的上一句话背道而驰。你知道吗</p>
<p>您必须使用此方法为每个备选方案创建一个组。你知道吗</p>
<pre><code>'(' + ')|('.join(fruits) + ')'
</code></pre>
<hr/>
<p>另一种选择是使用<code>for</code>循环,尝试逐个匹配候选对象。你知道吗</p>
<pre><code>patterns = [re.compile(p) for p in fruits]
for p in patterns:
if p.match(string):
return p.pattern
</code></pre>
<p>我不确定这对整体表现有何影响。你知道吗</p>
<p><strong>注意</strong>:如果“模式”只是常量字符串,那么首先就不应该使用正则表达式。我的回答基于这样一个假设:为了清晰起见,您的示例代码已经简化了。你知道吗</p>