擅长:python、mysql、java
<p>这就是团队处理<code>|</code>的方式<code>None</code>来自第二种选择。见:</p>
<pre><code>>>> re.match('(foo)|(bar)', 'foo').groups()
('foo', None)
>>> re.match('(foo)|(bar)', 'bar').groups()
(None, 'bar')
</code></pre>
<p>您可以筛选出不匹配项:</p>
<pre><code>>>> [group for group in re.match('(foo)|(bar)', 'foo').groups() if group is not None]
['foo']
>>> [group for group in re.match('(foo)|(bar)', 'bar').groups() if group is not None]
['bar']
</code></pre>
<p>或者,您可以使用命名组:</p>
<pre><code>>>> match = re.match('(?P<first>foo)|(?P<second>bar)', 'foo')
>>> res = match.groupdict()["first"] or match.groupdict()["second"]
>>> res
'foo'
>>> match = re.match('(?P<first>foo)|(?P<second>bar)', 'bar')
>>> res = match.groupdict()["first"] or match.groupdict()["second"]
>>> res
'bar'
</code></pre>
<p>如果可能存在空匹配(组=空字符串),则此代码将不起作用;你需要做一些类似的事情</p>
<pre><code>...
res = match.groupdict()["first"]
if res is None:
res = match.groupdict()["second"]
</code></pre>