擅长:python、mysql、java
<p>您使用模式来<em>匹配</em>(提取)文本,但在pandas方法中,您使用模式来拆分</em></p>
<p>如果每行开头只能有1、2或3位数字,请使用</p>
<pre><code>sep = r'(?:(?<=^\d)|(?<=^\d{2})|(?<=^\d{3}))\s+|\s+(?=\S+\s*$)'
</code></pre>
<p>见<a href="https://regex101.com/r/FJ47VV/1" rel="nofollow noreferrer">regex demo</a>。您可以通过在第一个非捕获组中添加更多lookbehind来扩展它</p>
<p><strong>详细信息</strong></p>
<ul>
<li><code>(?:(?<=^\d)|(?<=^\d{2})|(?<=^\d{3}))\s+</code>-1+空格(<code>\s+</code>),在字符串(<code>^</code>)开头加上1位(<code>\d</code>)、2位(<code>\d{2}</code>)或3位(<code>\d{3}</code>)</li>
<li><code>|</code>-或</li>
<li><code>\s+(?=\S+\s*$)</code>-1+个空格,后跟1+个非空格字符,然后是字符串结尾之前的任何尾随0+个空格</李>
</ul>