Если вы решите использовать более общий подход к синтаксическому анализу, такой как pyparsing или PLY , вы никогда не будете требовать регулярных выражений (которые могут соответствовать только небольшим подмножество языков, сопоставимых с такими общими синтаксическими анализаторами). Тем не менее, лексеры, такие как в PLY
, как правило, построены на регулярных выражениях (которые идеально соответствуют потребностям лексера!), Поэтому вам, вероятно, придется этого избегать (а также мощные инструменты, такие как BeautifulSoup
, когда любой «нормальный» пользователь сможет продолжать использовать его и наслаждаться им, просто передавая объект регулярного выражения в качестве селектора, поскольку BeautifulSoup
полностью поддерживает это), и ему придется перекодировать множество таких существующих анализаторов с выбранным вами универсальным назначением. разбор пакета.
Производительность может сильно пострадать, конечно, из-за использования чрезвычайно общих инструментов в тех случаях, когда более простые, высокооптимизированные и сжатые будут идеальным решением, а размер вашего кода может «взорваться» до очень большого размера во многих общие случаи. Но если вы не возражаете против того, чтобы программы были в два раза больше и в два раза медленнее и были настроены избегать регулярных выражений любой ценой, вы можете сделать это.
С другой стороны, если ваша основная проблема связана с удобочитаемостью (тоже вполне понятно и заслуживает похвалы), то опция re.VERBOSE
, позволяющая широко использовать пробелы и комментарии в шаблоне RE, действительно может творить чудеса. для этой цели без исключения любых преимуществ REs (за исключением разбавления иногда чрезмерной краткости ;-). Вы, конечно, захотите также держать по крайней мере одну систему синтаксического анализа общего назначения под своим поясом, конечно (вместо того, чтобы растягивать RE для выполнения задач, для которых они не подходят, как, к сожалению, делают многие люди!) - но минимальная команда RE хорошо послужит вам во многих случаях (включая, например, полное использование BeautifulSoup
и многих других инструментов, которые могут принимать RE в качестве параметров, чтобы применять их соответствующим образом), что, я думаю, вполне рекомендуется.