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

标签 python regex

我正在使用一个数据字符串,需要对其进行解释才能从“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

关于python - 如何使用正则表达式解释字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57710194/

相关文章:

python - 在 python 中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表

正则表达式匹配单词和带撇号的单词

python - 在 nestedExpr 中保留换行符

python - matplotlib 中 'bbox_to_anchor' 的 4 元素元组参数是什么意思?

regex - Sed 匹配数字后跟字符串并返回数字

sql - 计算字段中的位数

python - 如何捕获 ThreadPoolExecutor() 中线程死亡的情况?

Python Beautiful Soup 获取<br>后的部分文本

python - 如何选择水平 Lollipop 图/哑铃图的最小值和最大值?

javascript - 使用正则表达式格式化 HTTP header