Как я могу отлаживать регулярное выражение в python?

Есть ли способ отладки регулярного выражения в Python? И я не имею в виду процесс попытки и попытки, пока они не работают:)

EDIT: здесь можно отлаживать регулярные выражения в perl:


use re 'debug';

my $str = "GET http://some-site.com HTTP/1.1";
if($str =~/get\s+(\S+)/i) {
    print "MATCH:$1\n";
}

При запуске кода приведенный выше код выводит следующий вывод на моем компьютере:


Compiling REx "get\s+(\S+)"
Final program:
   1: EXACTF  (3)
   3: PLUS (5)
   4:   SPACE (0)
   5: OPEN1 (7)
   7:   PLUS (9)
   8:     NSPACE (0)
   9: CLOSE1 (11)
  11: END (0)
stclass EXACTF  minlen 5
Matching REx "get\s+(\S+)" against "GET http://some-site.com HTTP/1.1"
Matching stclass EXACTF  against "GET http://some-site.com HTTP/1.1" (33 chars)
   0           |  1:EXACTF (3)
   3        |  3:PLUS(5)
                                  SPACE can match 1 times out of 2147483647...
   4       |  5:  OPEN1(7)
   4       |  7:  PLUS(9)
                                    NSPACE can match 20 times out of 2147483647...
  24       |  9:    CLOSE1(11)
  24       | 11:    END(0)
Match successful!
MATCH:http://some-site.com
Freeing REx: "get\s+(\S+)"

Ответы

Ответ 2

Почему бы вам не использовать какой-либо инструмент regEx (я обычно использую Regulator) и тестирую выражение регулярного выражения там и когда вы выполняются, просто скопируйте/вставьте его в свой код.

Ответ 3

https://www.debuggex.com тоже очень хорошо. Это онлайн-отладчик Python (и еще несколько языков), который имеет довольно аккуратную визуализацию того, что делает и что не соответствует. Хороший ресурс, если вам нужно быстро создать регулярное выражение.

Ответ 4

Как уже упоминалось, существует также Regexbuddy

Ответ 5

Что ReggexBuddy имеет, что другие инструменты не имеют встроенного

Ответ 6

Не уверен в том, что вы делаете это прямо в Python, но я определенно мог бы предложить использовать инструмент редактора RegEx. В любом случае, это ваш лучший выбор. Лично я использовал The Regulator и нашел, что это очень полезно. Некоторые другие перечислены в этом SO-потоке.

Ответ 7

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