Для разработчиков, пытающихся написать регулярные выражения, которые легко найти и поддерживать, мне интересно, предложит ли такой подход что-то, что re.VERBOSE
уже не предоставляет.
Для начинающих ваша идея может иметькакое-то обращение.Однако, прежде чем идти по этому пути, вы можете попытаться смоделировать, как будет выглядеть ваш декларативный синтаксис для более сложных регулярных выражений, с использованием групп захвата, якорей, предварительных утверждений и так далее.Одна из проблем заключается в том, что вы можете получить декларативный синтаксис, который так же сложно запомнить, как и сам язык регулярных выражений.
Вы также можете подумать об альтернативных способах выражения вещей.Например, первая мысль, которая пришла мне в голову, состояла в том, чтобы выразить регулярное выражение, используя функции с короткими, легко запоминающимися именами.Например:
from refunc import *
pattern = Compile(
'a',
Capture(
Choices('b', 'c'),
N_of( 'd', 1, Infin() ),
N_of( 'e', 0, Infin() ),
),
Look_ahead('foo'),
)
Но когда я вижу это в действии, это кажется мне болью.Существует много аспектов регулярного выражения, которые достаточно интуитивны - например, +
означает «один или несколько».Одним из вариантов был бы гибридный подход, позволяющий вашему пользователю смешивать те части регулярного выражения, которые уже просты, с функциями для более эзотерических битов.
pattern = Compile(
'a',
Capture(
'[bc]',
'd+',
'e*',
),
Look_ahead('foo'),
)
Я бы добавил, что по моему опыту регулярные выраженияизучение мыслительного процесса.Освоение синтаксиса - самая простая часть.