Альтернативы регулярного выражения в Python

Регулярные выражения очень нечитаемы и трудно отлаживаются. Существует ли какая-либо замена для обработки текста, которую могут обрабатывать простые смертные?

Критерии включают

  • Это библиотека или инструмент (укажите ответ на самую библиотеку)

  • Синтаксис, читаемый человеком (нет необходимости в читах)

  • Документация с примерами

  • Возможность отладки выражений

Если возможно, вы можете указать языковые и языковые независимые решения. Я в основном развиваюсь на Python, но я надеюсь увидеть библиотеку, которую можно портировать на другие языки/платформы.

Я однажды прочитал, что у Haskell будут хорошие возможности обработки текста, но опять же это встроенное языковое решение, а не универсальное решение.

Изменить: Пожалуйста, не давайте ответов: "Регулярные выражения неплохие, делайте это!" Stackoverflow.com - это не место для субъективных мнений, но я думаю, что регулярные выражения плохие, и я хочу увидеть мои альтернативные варианты их использования.

Ответы

Ответ 2

pyparsing предлагает другой способ создания и выполнения (простых) грамматик. Я использовал его в проекте для разбора различных файлов журналов, и использование было довольно простым и несколько более интуитивным, чем с регулярными выражениями.

Ответ 3

вы можете использовать флаг re.VERBOSE:

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)

Ответ 5

LPeg - это библиотека Lua, а не Python, которую я боюсь, но она могла быть перенесена кем-то. В любом случае, это open-source, поэтому вы можете перенести его, если хотите. Он имеет несколько иной подход к сопоставлению текста, чем регулярные выражения, и, как таковой, я нахожу, что он имеет значительную кривую обучения. Однако, когда эффективность связана с тем, что у него есть потенциал для вытеснения регулярных выражений, - но, очевидно, такое утверждение сильно зависит от тестовой и одной способности на обоих языках.