Как я могу отладить регулярное выражение в Python? - PullRequest
16 голосов
/ 03 марта 2009

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

Вот как можно отлаживать регулярные выражения в 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+)"

Ответы [ 7 ]

18 голосов
/ 03 марта 2009
3 голосов
/ 26 ноября 2014

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

1 голос
/ 03 марта 2009

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

0 голосов
/ 04 марта 2009

RegexBuddy имеет то, чего нет у других инструментов - встроенный отладчик , который показывает весь процесс сопоставления как успешных, так и неудачных попыток сопоставления. Другие инструменты показывают только конечный результат (который может показать и RegexBuddy).

0 голосов
/ 03 марта 2009

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

0 голосов
/ 03 марта 2009

Аналогично уже упомянутому, есть также Regexbuddy

0 голосов
/ 03 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...