Моя программа получает объект с параметрами, и мне нужно получить значения параметров.
Объект, который дается моей программе, будет выглядеть так:
Object = """{{objectName|
parameter1=random text|
parameter2=that may or may not|
parameter3=contain any letter (well, almost)|
parameter4=this is some [[problem|problematic text]], Houston, we have a problem!|
otherParameters=(order of parameters is random, but their name is fixed)}}"""
(все параметры могут существовать или не существовать)
Я пытаюсь получить значения свойств.
В первых 3 строчках это довольно просто. простое регулярное выражение найдет его:
if "parameter1" in Object:
parameter1 = re.split(r"parameter1=(.*?)[\|\}]", Object)[1]
if "parameter2" in Object:
parameter2 = re.split(r"parameter2=(.*?)[\|\}]", Object)[1]
и т. Д.
Проблема с параметром 4, приведенное выше регулярное выражение (property4=(.*?)[\|\}]
) вернет только this is some [[problem
, поскольку регулярное выражение останавливается на вертикальной панели.
Теперь вот что: вертикальная черта будет отображаться только как часть текста внутри "[[]]".
Например, parameter1=a[[b|c]]d
может появиться, но parameter1=a|bc|
никогда не появится.
Мне нужно регулярное выражение, которое остановится на вертикальной черте, если оно не заключено в двойные квадратные скобки. Так, например, для параметра 4 я получу this is some [[problem|problematic text]], Houston, we have a problem!