擅长:python、mysql、java
<p>在第一个示例中,<code>[A-Za-z ]+</code>之后的所有内容都是可选的。评估者知道这一点,所以不麻烦。当它已匹配(或无法匹配)<code>[A-Za-z ]+</code>时停止。如果你想匹配这些组,你需要强迫它继续。一种方法是将<code>$</code>添加到正则表达式的末尾:</p>
<pre><code>>>> regex = re.search('[A-Za-z ]+(in (?P<year>\d\d\d\d))?\s?(in (?P<country>[A-z]+))?$', line)
>>> regex.groupdict()
{'country': 'Holland', 'year': '2000'}
</code></pre>