Подскажите, что нужно дописать в регулярном выражении?

У меня имеется словарь:

resul = {"SN":"SN: abc123\r\nMAC: 10:ab:cd:30:5C:7C\r\n01-04-2022 Замена"}

я написал в коде регулярное выражение:

name_match_3 = re.search(r'(\r\n.+)', test1.get('sn'), flags=re.DOTALL)
    dict_miner_regular['Comment'] = (name_match_3.group(1) if name_match_3 else None)

в итоге у меня получается:

result_2 = {'Comment':'MAC: 10:ab:cd:30:5C:7C\r\n01-04-2022 Замена'}

Но мне надо убрать и MAC: 10:ab:cd:30:5C:7C. Но он не везде есть.

в итоге надо, чтобы убралось SN: и MAC:

result_3 = {'Comment':'01-04-2022 Замена'}

я понимаю, что надо что-то дописать сюда --> (r'(\r\n.+)' ...


Ответы (3 шт):

Автор решения: strawdog

делайте сплит по переводу строки и берите последний элемент этого сплита. и подставляйте куда вам нужно.

resul = {"SN":"SN: abc123\r\nMAC: 10:ab:cd:30:5C:7C\r\n01-04-2022 Замена"}
res = {}
res["Comment"] = resul["SN"].split("\n")[-1]

res:

{'Comment': '01-04-2022 Замена'}
→ Ссылка
Автор решения: Alexey

Мне помогло вот это условие: (?:^|\r\n)((?:(?!SN|MAC|\r\n).)+)

→ Ссылка
Автор решения: Wiktor Stribiżew

Используйте

(?m)^(?!SN|MAC)[^\r\n]+

См. пример работы выражения.

Подробности

  • (?m) - многострочный режим включен
  • ^ - начало строки
  • (?!SN|MAC) - сразу после текущей позиции не должно быть ни SN, ни MAC
  • [^\r\n]+ - один и более символов, отличным от символов перевода строки LF / CR
→ Ссылка