Мы можем попробовать использовать re.findall
со следующим шаблоном регулярных выражений:
\[UserVariables\]\n((?:(?!\[.*?\]).)*)
Это говорит, что соответствует тегу [UserVariables]
, за которым следует слегка сложное выражение:
((?:(?!\[.*?\]).)*)
Это выражение представляет собой закаленную точку , которая соответствует любому символу, по одному за раз, при условии, что то, что находится впереди, не другой тег, заключенный в квадратные скобки.
matches = re.findall(r'\[UserVariables\]\n((?:(?!\[.*?\]).)*)', input, re.DOTALL)
print(matches)
[' User1=@StJid;IF(fields.Fieldtype="Artikel.Ger\xc3\xa4t" , STR$(fields.id,0,0) , @StJid)\n']
Edit:
В моем ответе предполагается, что все содержимое файла находится в памяти в одной строке Python. Вы можете прочитать весь файл, используя:
with open('Path/to/your/file.txt', 'r') as content_file:
input = content_file.read()
matches = re.findall(r'\[UserVariables\]\n((?:(?!\[.*?\]).)*)', input, re.DOTALL)
print(matches)