Как преобразовать 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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