<p>你可以用</p>
<pre class="lang-py prettyprint-override"><code>(?<![/\d])(?<!\d[.-])(\d+(?:\.\d+)?)\s*ML\b(?!/)
</code></pre>
<p>见<a href="https://regex101.com/r/Eu7YtY/2" rel="nofollow noreferrer">Python regex demo</a></p>
<p><em>详细信息</em>:</p>
<ul>
<li><code>(?<![/\d])</code>-当前位置左侧不允许有<code>/</code>或数字</li>
<li><code>(?<!\d[.-])</code>-当前位置左侧不允许立即出现数字+<code>.</code>或<code>-</code></li>
<li><code>(\d+(?:\.\d+)?)</code>-组1:一个或多个数字,以及一个<code>.</code>和一个或多个数字的可选序列</li>
<li><code>\s*</code>-零个或多个空格字符</li>
<li><code>ML\b</code>-<code>ML</code>作为一个整体</li>
<li><code>(?!/)</code>-当前位置右侧不允许立即出现{<cd2>}</李>
</ul>
<p>见<a href="https://ideone.com/6JJjh3" rel="nofollow noreferrer">Python demo</a>:</p>
<pre class="lang-py prettyprint-override"><code>import re
pattern = re.compile(r'(?<![/\d])(?<!\d[.-])(\d+(?:\.\d+)?)\s*ML\b(?!/)', re.A)
test = ["10ML", "10 ML", "10.5ML", "1MG/1ML", "1MG/10ML", "10MG/0.5ML", " 10ML and 15ML ",
"LODEXA (DEXAMETHASONE) 5 MG/ML INJECTION", "NSS.0.9% 1000 ML (PLASTIC BAG)",
"110 MLM HIDRASEC (RACECADOTIL)10 ML POWDER FOR 1-30 ML"]
for i, s in enumerate(test):
print(test[i], '>>' , pattern.findall(s))
</code></pre>
<p>输出:</p>
<pre><code>10ML >> ['10']
10 ML >> ['10']
10.5ML >> ['10.5']
1MG/1ML >> []
1MG/10ML >> []
10MG/0.5ML >> []
10ML and 15ML >> ['10', '15']
LODEXA (DEXAMETHASONE) 5 MG/ML INJECTION >> []
NSS.0.9% 1000 ML (PLASTIC BAG) >> ['1000']
110 MLM HIDRASEC (RACECADOTIL)10 ML POWDER FOR 1-30 ML >> ['10']
</code></pre>