2024-05-15 03:04:40 发布
网友
我在努力学习正则表达式。是否可以使用regex将电子元件值从标准格式解析为速记格式:
4.7pF > 4P7 16.2kΩ > 16K2 22.6nH > 22N6
理想情况下,正则表达式会在小数后找到字母,并将其插入小数点的位置。如果我们能切掉单元后面的字母/符号也会很好。你知道吗
到目前为止,我正在匹配十进制数,但不知道如何在匹配组后获取字母,然后不知道如何进行替换。你知道吗
干杯
在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表达式来构造所需的替换字符串。你知道吗
re.sub
使用以下命令进行搜索:
([0-9]*)\.([0-9]*)(.).*(demo)
([0-9]*)\.([0-9]*)(.).*
然后用\1\3\2替换它。这不会改变代表单位的字母的大小写。不知道怎么做。你知道吗
\1\3\2
在Python中,可以使用
Ideoene Demo
下面是一个完整的Python解决方案:
regex demo在这里。你知道吗
正则表达式匹配前导非数字(0或更多),然后捕获1+个数字,匹配一个点,捕获1个或更多数字,然后捕获1个非空白字符。你知道吗
在代码中,
re.sub
方法内部使用lambda表达式来构造所需的替换字符串。你知道吗使用以下命令进行搜索:
([0-9]*)\.([0-9]*)(.).*
(demo)然后用
\1\3\2
替换它。这不会改变代表单位的字母的大小写。不知道怎么做。你知道吗相关问题 更多 >
编程相关推荐