Вы можете сопоставить ANYNAME1 в группе захвата в первой строке, затем использовать .*
, чтобы добраться до конца строки, и использовать \n
, чтобы сопоставить новую строку, чтобы добраться до второй строки.Там вы можете сопоставить и зафиксировать свои значения, используя 3 группы.
/begin MEASUREMENT ([\w.]+).*\nSWORD ([\w.]+) \d+ \d+ (-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)
Regex demo | Python demo
Пояснение
/begin MEASUREMENT
Совпадение буквально сопровождается пробелом ([\w.]+).*\n
Захват 1+ слово chars или точка в группе 1 и совпадать до конца строки.Затем сопоставьте новую строку SWORD ([\w.]+)
Совпадение SWORD и захватите в группе 2 1+ раза слово char или точку \d+ \d+
Матч пробел, 1+ цифр, пробел, 1+ пробел (-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)
Записать в группе 3 и 4 необязательный знак минуса, 1+ цифры и необязательную десятичную часть с пробелом между
Например:
import re
regex = r"/begin MEASUREMENT ([\w.]+).*\nSWORD ([\w.]+) \d+ \d+ (-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)"
test_str = ("/begin MEASUREMENT ANY.NAME1 \"Unterstützungskraft Softwaremodul \"\n"
"SWORD ANYN.AME2 1 100 -2342342523 -14.29")
print(re.findall(regex, test_str))
# [('ANY.NAME1', 'ANYN.AME2', '-2342342523', '-14.29')]