我的脚本收到下面的行,并且我只需要过滤fmtp属性,我需要从下面的行中删除a=fmtp:XXXX(最多3位数字)。

a=fmtp:96 mode-change-period=1; mode-change-capability=2; mode-change-neighbor=0; max-red=0; octet-align=0


我下面的正则表达式当前去除a=fmtp:,但不去除其后的2(最大3)个数字

fmtp_attributes=re.findall("(?<=fmtp:).*$",a_line)


请帮助我删除a=fmtp:之后的后两位/三位数

感谢您的帮助

最佳答案

要提取所需的字符串部分,可以使用

r'fmtp:\d{2,3}\s*(.*)'


请参见regex demo

细节


fmtp:-文字子字符串
\d{2,3}-2或3位数字
\s*-0+空格
(.*)-捕获组1(这是您需要抓取的):尽可能多的0+字符(换行符除外)


参见Python demo

import re
s="a=fmtp:96 mode-change-period=1; mode-change-capability=2; mode-change-neighbor=0; max-red=0; octet-align=0"
m = re.search(r'fmtp:\d{2,3}\s*(.*)', s)
if m:
    print("The text extracted: {}".format(m.group(1)))
    dt = dict([x.split("=") for x in m.group(1).split("; ")])
    print("The list of attribute values: {}".format(dt))


输出:

The text extracted: mode-change-period=1; mode-change-capability=2; mode-change-neighbor=0; max-red=0; octet-align=0
The list of attribute values: {'octet-align': '0', 'max-red': '0', 'mode-change-capability': '2', 'mode-change-period': '1', 'mode-change-neighbor': '0'}

关于python - 适用于FMTP的Python正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52864601/

10-11 16:05