Как преобразовать enum.IntFlag из скомпилированного регулярного выражения в объекты re.RegexFlag?Python

Программы на Python
Anonymous
Как преобразовать enum.IntFlag из скомпилированного регулярного выражения в объекты re.RegexFlag?

Сообщение Anonymous »

Дано регулярное выражение, которое выглядит следующим образом:

Код: Выделить всё

_regex_pattern = re.compile(r'["\\')\]}]+?(?:\s+|(?=--)|$)', re.MULTILINE|re.UNICODE)
мы можем получить флаг с помощью:

Код: Выделить всё

_regex_pattern.flags  # outputs "40"
и извлеките шаблон с помощью:

Код: Выделить всё

_regex_pattern.pattern  # '["\\')\]}]+?(?:\s+|(?=--)|$)'
Если мы хотим сохранить регулярное выражение в каком-то формате JSON, мы сделаем что-то вроде:

Код: Выделить всё

_regex_json = {'pattern': _regex_pattern.pattern, 'flags': _regex_pattern.flags}

with open('regex.json', 'w') as fout:
json.dump(_regex_json, fout)
Но когда мы хотим загрузить шаблон, кроме маринования, как нам преобразовать IntFlag в флаг регулярного выражения?

Код: Выделить всё

with open('regex.json') as fin:
_regex_json = json.load(fin)

_regex_pattern_loaded = re.compile(
r"{}".format(_regex_json['pattern']), ???
)
Пилирование не является подходящим решением для этой задачи, поскольку мы собираемся здесь буквально что-то компилировать, это небезопасно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ag-objects

Вернуться в «Python»