正则表达式将4.7uF替换为4U7

2024-05-15 03:04:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在努力学习正则表达式。是否可以使用regex将电子元件值从标准格式解析为速记格式:

 4.7pF    >  4P7
 16.2kΩ   >  16K2
 22.6nH   >  22N6

理想情况下,正则表达式会在小数后找到字母,并将其插入小数点的位置。如果我们能切掉单元后面的字母/符号也会很好。你知道吗

到目前为止,我正在匹配十进制数,但不知道如何在匹配组后获取字母,然后不知道如何进行替换。你知道吗

干杯


Tags: 标准格式字母符号情况regex单元理想
3条回答

在Python中,可以使用

result = re.sub(r'(\d+)(?:\.(\d+))(\w).*', r"\1\3\2", test_str).upper()

Ideoene Demo

下面是一个完整的Python解决方案:

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']

regex demo在这里。你知道吗

正则表达式匹配前导非数字(0或更多),然后捕获1+个数字,匹配一个点,捕获1个或更多数字,然后捕获1个非空白字符。你知道吗

在代码中,re.sub方法内部使用lambda表达式来构造所需的替换字符串。你知道吗

使用以下命令进行搜索:

([0-9]*)\.([0-9]*)(.).*demo

然后用\1\3\2替换它。这不会改变代表单位的字母的大小写。不知道怎么做。你知道吗

相关问题 更多 >

    热门问题