<p>你可以用</p>
<pre class="lang-py prettyprint-override"><code>\b(?P<subsection>\d+(?:\s+\d\w*)+)\s+(?P<name>.*?)\s+(?P<date>\d{1,2}/\d{1,2}/\d{2})\b
</code></pre>
<p>见<a href="https://regex101.com/r/e9SQNe/1/" rel="nofollow noreferrer">regex demo</a><em>详细信息</em>:</p>
<ul>
<li><code>\b</code>-字边界</li>
<li><code>(?P<subsection>\d+(?:\s+\d\w*)+)</code>-分组“subsection”:一个或多个数字,然后出现一个或多个空格,后跟一个数字,然后是零个或多个单词字符</li>
<li><code>\s+</code>-一个或多个空格</li>
<li><code>(?P<name>.*?)</code>-组“名称”:零个或多个字符(换行字符除外),尽可能少</li>
<li><code>\s+</code>-一个或多个空格</li>
<li><code>(?P<date>\d{1,2}/\d{1,2}/\d{2})</code>-组“日期”:一个或两个数字,<code>/</code>,一个或两个数字,<code>/</code>,两个数字</li>
<li><code>\b</code>-字边界</li>
</ul>
<p>见a <a href="https://ideone.com/zErfEC" rel="nofollow noreferrer">Python demo</a>:</p>
<pre class="lang-py prettyprint-override"><code>import re
pattern = r"\b(?P<subsection>\d+(?:\s+\d\w*)+)\s+(?P<name>.*?)\s+(?P<date>\d{1,2}/\d{1,2}/\d{2})\b"
text = "26 24 16 Panelboards 10/05/18 26 26 00i Power Distribution Units – Install 10/05/18"
print([x.groupdict() for x in re.finditer(pattern, text)])
</code></pre>
<p>输出:</p>
<pre class="lang-py prettyprint-override"><code>[
{'subsection': '26 24 16', 'name': 'Panelboards', 'date': '10/05/18'},
{'subsection': '26 26 00i', 'name': 'Power Distribution Units – Install', 'date': '10/05/18'}
]
</code></pre>