我的脚本收到下面的行,并且我只需要过滤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/