<p>您的用例称为替换。这正是<a href="https://docs.python.org/2/library/re.html#re.sub" rel="nofollow noreferrer">^{<cd1>}</a>函数的作用。你知道吗</p>
<pre><code>import re
s = "bla 1/6 part bla bla 76/88 part 12345/12345 part bla"
print(s)
s = re.sub(r'(\b\d{1,4}/\d{1,4} part)', r'\1;', s)
print(s)
</code></pre>
<p>它的输出是</p>
<pre class="lang-none prettyprint-override"><code>bla 1/6 part; bla bla 76/88 part; 12345/12345 part bla
</code></pre>
<p>注意最后一次出现<code>part</code>之后缺少的<code>;</code>。你知道吗</p>
<p>我用<a href="https://docs.python.org/2/library/re.html#regular-expression-syntax" rel="nofollow noreferrer">^{<cd4>} quantifiers</a>将分数的分子和分母限制为4位小数,这是你提到的<code>[1-1000]</code>符号。它甚至可以用<code>1?\d{1,3}</code>来更好地近似(但这也不完全相同,它还允许例如<code>1999/1999</code>)<sup>[1]</sup>。你知道吗</p>
<hr/>
<p><sup>[1]</sup>
<strong>p.s.</strong>作为<a href="https://stackoverflow.com/questions/42297928/finding-a-string-matching-a-given-pattern-and-separating-lines-with-re/42299071#comment71750915_42297928">tripleee commented</a>,从1到1000的十进制数的精确正则表达式是<code>[1-9]([0-9][0-9]?)?|1000</code>,它看起来有点复杂,但是如果您将仅有的4位数字<code>1000</code>分开,并在1到3位部分使用多余的一对括号:<code>[1-9]([0-9]([0-9])?)?</code>,构建模式就会变得很明显。另一种选择是使用字符类快捷方式<code>\d</code>来<code>[0-9]</code>,结果是<code>[1-9]\d{0,2}|1000</code>。你知道吗</p>
<p><strong>编辑:</strong></p>
<ul>
<li>组合匹配分组。你知道吗</li>
<li>在分子前加了锚。你知道吗</li>
</ul>