擅长:python、mysql、java
<p>你可以用</p>
<pre><code>re.sub(r'^([^.]*\.)|\d+(?![^.])', r'\1', text)
</code></pre>
<p>见<a href="https://regex101.com/r/1HnNoZ/1/" rel="nofollow noreferrer">regex demo</a></p>
<p><em>详细信息</em>:</p>
<ul>
<li><code>^([^.]*\.)</code>-零个或多个字符,而不是一个点,然后在捕获到组1中的字符串的开头是一个<code>.</code>字符(在替换模式中用<code>\1</code>引用)</li>
<li><code>|</code>-或</li>
<li><code>\d+(?![^.])</code>-一个或多个数字后跟一个点或字符串结尾(<code>(?=\.|$)</code>)</李>
</ul>
<p>见<a href="https://ideone.com/YBXRmv" rel="nofollow noreferrer">Python demo</a>:</p>
<pre><code>import re
text = r'Node57Name123.grpObject12.grp23Symbol43.shape52.anotherobject25.shape23'
print( re.sub(r'^([^.]*\.)|\d+(?![^.])', r'\1', text) )
## => Node57Name123.grpObject.grp23Symbol.shape.anotherobject.shape
</code></pre>