擅长:python、mysql、java
<p>下面是一个完整的Python解决方案:</p>
<pre><code>import re
p = re.compile(r'\D*(\d+)\.(\d+)(\S).*')
strs = ["4.7pF", "16.2kΩ", "22.6nH"]
result = [p.sub(lambda m: "{0}{1}{2}".format(m.group(1),m.group(3).upper(),m.group(2)), x) for x in strs]
print(result) # => ['4P7', '16K2', '22N6']
</code></pre>
<p><a href="https://regex101.com/r/kV0bC4/2" rel="nofollow">regex demo</a>在这里。你知道吗</p>
<p>正则表达式匹配前导非数字(0或更多),然后捕获1+个数字,匹配一个点,捕获1个或更多数字,然后捕获1个非空白字符。你知道吗</p>
<p>在代码中,<code>re.sub</code>方法内部使用lambda表达式来构造所需的替换字符串。你知道吗</p>