Предисловие: я не эксперт по регулярным выражениям
Я создаю сценарий Python, который будет анализировать сообщения журнала и создавать список пар ключ / значение в сообщении журнала.
У меня есть строка ввода, которая выглядит следующим образом:
uuid = 00b544de-2c89-4e40-a39f-1ef60f0273ca версия = 3df1e743-439e- 49a5-bf12-ba49e54c2a9d creationTime = 2020-02-26 04: 09: 02.152073 lastUpdateTime = 2020-02-26 04: 09: 02.152073 name = My Имя объекта комментарий = создать мой объект тип = пользовательский customType = SCT returnValueOnAccess = true timeFormatString = ГГГГ min = 49 max = 20000 specialCharacter = X specialType = BigAndSmall numberOfBigDigits = 0 numberOfSmallDigits = 4
Я хотел бы взять эту строку и создать такой список:
[
'uuid=00b544de-2c89-4e40-a39f-1ef60f0273ca',
'version=3df1e743-439e-49a5-bf12-ba49e54c2a9d',
'creationTime=2020-02-26 04:09:02.152073',
...,
'numberOfSmallDigits=4'
]
Я НЕ хочу словарь.
Я бы хотел нравится использовать re.split (), Я просто не могу понять правильный шаблон регулярного выражения для выполнения sh моей задачи.
У нас есть другие кодовые базы, которые будут использовать шаблон регулярного выражения, который мы придумали для выполнения sh той же задачи, в противном случае я будет делать это более Pythoni c способом.
Как видите, значения могут содержать пробелы, слова / ди git символы и знаки пунктуации.
Я пробовал несколько вариантов прогнозирования, прогнозирования и каждого шаблона регулярного выражения между ними.
Вот код из моей песочницы, который НЕ РАБОТАЕТ:
log = 'uuid=00b544de-2c89-4e40-a39f-1ef60f0273ca version=3df1e743-439e-49a5-bf12-ba49e54c2a9d creationTime=2020-02-26 04:09:02.152073 lastUpdateTime=2020-02-26 04:09:02.152073 name=My Object Name comment=create my object type=Custom customType=SCT returnValueOnAccess=true timeFormatString=YYYY min=49 max=20000 specialCharacter=X specialType=BigAndSmall numberOfBigDigits=0 numberOfSmallDigits=4'
print(re.split(r'(?:(?<=\s)|(?<=\A))([^\s=]+)=(.*?)(?=(?:\s[^\s=]+=|$))', log))
print(re.split(r' +(?=\w+)(?==+)', log))
print(re.split(r'\s+', log))
print(re.split(r'.*(?=\w*)(?==)', log))
print(re.split(r'\w*(?=\w*)(?==)', log))
print(re.split(r'\w*\s*(?=\w*)(?==)', log))
print(re.split(r'(\w+|\s+)+(?=\w*)(?==)', log))
print(re.split(r'(?=(?:\w*)(?:=))+(\w+|\s+)+', log))
print(re.split(r'(?:(?:\w*)(?:=))+(\w+|\s+)+(?:(?:\w*)(?:=))', log))
print(re.split(r'(?<=\=)(.*?)(?=\w+=)', log))
print(re.split(r'((?<=\=).*?(?=\w+=))+', log))
Любая помощь будет принята с благодарностью!