Skip to main content
 首页 » 编程设计

python之如何使用正则表达式解释字符串

2025年05月04日26开发

我正在使用一个数据字符串,需要对其进行解释才能从“LpA:45dB 典型值,48dB 最大值”中获取键值为“45dB 典型值,48dB 最大值”。我尝试使用下面的代码,但得到了不同的字符串。

我尝试使用正则表达式模式解决问题 '(.*)LpA:(\w*)\n

 
data_str="""With AC power supply (with 24 PoE+ ports loaded for C9300 SKUs) 
●  LpA: 45dB typical, 48 dB max 
●  LwA: 5.6B typical, 5.9B max 
With AC power supply (with half the number of PoE+ ports loaded for C9300L SKUs) 
●  LpA: 44dB typical, 47 dB max 
●  LwA: 5.5B typical, 5.8B max 
Typical: Noise emission for a typical configuration 
Maximum: Statistical maximum to account for variation in production""" 
 
pattern_type=re.compile('(.*)LpA:(\w*)\n',re.I) 
key = pattern_type.sub(r"\2","%r"%data_str) 
print(key) 
 
 

我希望:
'''典型值 45dB,最大值 48dB'''
但得到的结果是:
'''典型值 45dB,最大值 48dB ● LwA:5.6B 典型值,5.9B 最大值 使用交流电源(为 C9300L SKU 加载一半数量的 PoE+ 端口) ● LpA:典型值 44dB,最大值 47dB ● LwA:5.5B 典型值,5.8B 最大值 典型:典型配置的噪音排放 最大值:考虑生产变化的统计最大值'''

请您参考如下方法:

您似乎尝试匹配整个字符串,然后将其替换为匹配组之一。相反,只需使用 re.search 来得到那一个匹配组。此外,您可能希望使用 . 而不是 \w,因为子字符串包含空格和其他非单词字符。

>>> pattern_type = re.compile('LpA: (.*)') 
>>> key = pattern_type.search(data_str) 
>>> key.group(1) 
45dB typical, 48 dB max