擅长:python、mysql、java
<p>使用</p>
<pre><code>s = re.sub(r' \d+ ', '\n\\g<0>\n', s)
</code></pre>
<p>参见<a href="https://regex101.com/r/081OkV/1" rel="nofollow noreferrer">regex demo</a>。你知道吗</p>
<p>只替换独立的数字作为整个单词使用</p>
<pre><code>s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)
</code></pre>
<p>如果要匹配用空格括起来的数字,请仅使用</p>
<pre><code>re.sub(r'(?<!\S)\d+(?!\S)', '\n\\g<0>\n', s) # also at the start/end of string
re.sub(r'(?<=\s)\d+(?=\s)', '\n\\g<0>\n', s) # only between whitespaces
</code></pre>
<p>实际上,替换可以指定为<code>'\n\g<0>\n'</code>,因为<code>\g</code>是一个未定义的转义序列,在这种情况下反斜杠将被视为文字字符,并将保留在结果字符串中以形成regex backreference构造。你知道吗</p>
<p><a href="https://ideone.com/KAhtZj" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
s = "bla bla 1 bla bla bla 142 bla bla"
s = re.sub(r'\b\d+\b', '\n\\g<0>\n', s)
print(s) # => bla bla \n1\n bla bla bla \n142\n bla bla
</code></pre>