擅长:python、mysql、java
<p>您可以从匹配数字、点和行的其余部分开始。然后有选择地重复所有不以大写字符A-Z后跟<code>)</code>开头的行</p>
<p>如果您只想要问题主体,您可以在一个组中捕获它</p>
<pre><code>^\d+\.[^\S\r\n]*([A-Z].*(?:\r?\n(?![A-Z]\)).*)*[.?!])
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li><code>^</code>字符串的开头</li>
<li><code>\d+\.[^\S\r\n]*</code>匹配1+个数字、一个<code>.</code>和不带换行符的可选空白字符</li>
<li><code>(</code>捕获<strong>组1</strong>
<ul>
<li><code>[A-Z].*</code>匹配大写字符A-Z</li>
<li><code>(?:\r?\n(?![A-Z]\)).*)*</code>可选地重复所有不以大写字符A-Z开头,后跟<code>)</code>的行</li>
<li><code>[.?!]</code>匹配<code>.</code>{<cd11>}或<code>!</code></li>
</ul>
</li>
<li><code>)</code>关闭组1</li>
</ul>
<p><a href="https://regex101.com/r/8BhHCY/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>匹配答案<code>^[a-zA-Z]\)?\s+\w+.+</code>的模式有一个可选的<code>)</code>,也可以以小写字符a-z开头,例如,它也匹配<code>a test</code></p>
<p>如果<code>)</code>始终存在,则不必将其设置为可选的,并且可能仅匹配<code>[A-Z]</code>将使更改得到的假阳性稍微小一些</p>