擅长:python、mysql、java
<p>我会在这里使用<code>re.findall</code>:</p>
<pre><code>inp = "In moreH$450pacific much liquormk H2.55pacific Z,H430, 430"
parts = re.findall(r'.*?\d+(?:\.\d+)?(?!,?\s*\d)', inp)
print(parts)
</code></pre>
<p>这张照片是:</p>
<pre><code>['In moreH$450', 'pacific much liquormk H2.55', 'pacific Z,H430, 430']
</code></pre>
<p>正则表达式的策略是匹配所有内容,直到第一个数字内容未通过负前瞻。逻辑如下:</p>
<pre><code>.*? match all content up and including the nearest
\d+(?:\.\d+)? number, possibly with a decimal component
(?!,?\s*\d) which is NOT followed by either a comma, whitespace, and another number OR
just another number
</code></pre>