<p>只是为了给你一个非正则表达式的选择,使用<a href="https://python-reference.readthedocs.io/en/latest/docs/str/rstrip.html" rel="nofollow noreferrer">^{<cd1>}</a>。我们可以为这个函数提供一组字符,以便从字符串的右侧删除,例如:<code>rstrip('0123456789')</code>。或者,我们也可以使用<a href="https://www.journaldev.com/23788/python-string-module" rel="nofollow noreferrer">^{<cd3>}</a>模块中的<em><strong>数字</strong></em>常量:</p>
<pre><code>from string import digits
s = 'Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23'
x = '.'.join([s.split('.')[0]] + [i.rstrip(digits) for i in s.split('.')[1:]])
print(x)
</code></pre>
<p>印刷品:</p>
<pre><code>Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
</code></pre>
<hr/>
<p><strong>编辑:</strong></p>
<p>如果您必须使用常规模式,则以下内容似乎涵盖了您的示例:</p>
<pre><code>(\.[^.]*?)\d+\b
</code></pre>
<p>替换为第一个捕获组,请参阅联机<a href="https://regex101.com/r/394MBc/1" rel="nofollow noreferrer">demo</a></p>
<ul>
<li><code>(</code>-打开捕获组:
<ul>
<li><code>\.[^.]*?</code>-一个文字点,后跟0+非点字符(惰性)</李>
<li><code>)</code>-关闭捕获组</李>
</ul>
</li>
<li><code>\d+\b</code>-匹配1+个数字,直到一个单词边界</李>
</ul>
<p>样本:</p>
<pre><code>import re
s = 'Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23'
x = re.sub(r'(\.[^.]*?)\d+\b', r'\1', s)
print(x)
</code></pre>
<p>印刷品:</p>
<pre><code>Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
</code></pre>