擅长:python、mysql、java
<p>如果我理解正确,当文本中仅出现两个“选项”中的一个,即仅“真实和公平”或仅“不误导”时,您也希望匹配</p>
<p>正则表达式中的一个问题是<code>[(a-z)]</code>没有做您认为它做的事情。这样的类只匹配一个字符。所以你想要的是:<code>\([a-z]\)</code></p>
<p>以下是如何让它工作:</p>
<pre><code>w = "(1) The accounts are:\n (a) true and fair;\n (b) not misleading."
res = re.findall(r"\(\d\)\s(.*):$\s*\([a-z]\)(.*?)(?:\.|;$\s*\([a-z]\)(.*?)\.)$", w, re.MULTILINE)
for a, b, c in res:
print(a + b)
if c:
print(a + c)
</code></pre>