擅长:python、mysql、java
<p>如果一个<code>i</code>字符只能有1次或多次(因此没有罗马数字),您可以使用:</p>
<pre><code>\(?i+\)|\b(?:[A-Za-z]|\d+)\.
</code></pre>
<p>模式匹配:</p>
<ul>
<li><code>\(?i+\)</code>匹配可选的<code>(</code>,然后1+乘以<code>i</code>字符和<code>)</code></li>
<li><code>|</code>或</li>
<li><code>\b</code>防止部分匹配的单词边界</li>
<li><code>(?:</code>非捕获组
<ul>
<li><code>[A-Za-z]</code>匹配单个字符a-Za-z</li>
<li><code>|</code>或</li>
<li><code>\d+</code>匹配1+个数字</li>
</ul>
</li>
<li><code>)</code>关闭非捕获组</li>
<li><code>\.</code>匹配一个点</li>
</ul>
<p><a href="https://regex101.com/r/Ao5AMF/1/" rel="nofollow noreferrer">Regex demo</a></p>
<p>如果你想匹配罗马数字,你可以看到<a href="https://stackoverflow.com/questions/267399/how-do-you-match-only-valid-roman-numerals-with-a-regular-expression">this post</a></p>