154 votes

Comment pour déboguer une regex ?

Les expressions régulières peuvent devenir très complexes. Le manque d’espace blanc les rend difficile à lire. Je ne peux pas bien qu’une expression régulière avec un débogueur. Alors, comment experts débogage des expressions régulières complexes ?

71voto

Mick Points 7470

Vous achetez RegexBuddy et d'utiliser ses construit dans la fonctionnalité de débogage. Si vous travaillez avec regexes plus de deux fois par année, vous allez vous faire de cet argent dans le temps économisé en un rien de temps. RegexBuddy sera également vous aider à créer simples et complexes, des expressions régulières, et même de générer le code pour vous dans une variété de langues.

alt text

Aussi, selon le développeur, cet outil fonctionne presque parfaitement sur Linux lorsqu'il est utilisé avec le VIN.

52voto

ephemient Points 87003

Avec Perl 5.10, use re 'debug';. (Ou debugcolor, mais je ne peux pas le format de sortie correctement sur un Débordement de Pile.)

$ perl -Mre=debug -e'"foobar"=~/(.)\1/'
La Compilation De REx "(.)\1"
Programme Final:
 1: OPEN1 (3)
 3: REG_ANY (4)
 4: CLOSE1 (6)
 6: REF1 (8)
 8: FIN (0)
minlen 1
Correspondance REx "(.)\1" contre "foobar"
 0 <> <toto> | 1:OPEN1(3)
 0 <> <toto> | 3:REG_ANY(4)
 1 <f> <oobar> | 4:CLOSE1(6)
 1 <f> <oobar> | 6:REF1(8)
n'a pas...
 1 <f> <oobar> | 1:OPEN1(3)
 1 <f> <oobar> | 3:REG_ANY(4)
 2 <fo> <obar> | 4:CLOSE1(6)
 2 <fo> <obar> | 6:REF1(8)
 3 <foo> <bar> | 8:FIN(0)
Match de succès!
Libérer REx: "(.)\1"

Aussi, vous pouvez ajouter des espaces et commentaires à regexes pour les rendre plus lisibles. En Perl, ce qui est fait avec l' /x modificateur. Avec pcre, il y a l' PCRE_EXTENDED drapeau.

"foobar" =~ /
    (.)  # any character, followed by a
    \1   # repeat of previously matched character
/x;

pcre *pat = pcre_compile("(.)  # any character, followed by a\n"
                         "\\1  # repeat of previously matched character\n",
                         PCRE_EXTENDED,
                         ...);
pcre_exec(pat, NULL, "foobar", ...);

30voto

kevin Points 434

Je vais ajouter un autre afin que je ne l’oubliez pas : debuggex

C’est bon parce que c’est très visuel :Photo of the Debuggex regex helper

28voto

thetaiko Points 5620

Lorsque je suis bloqué sur une expression régulière je tourne habituellement à ceci : http://gskinner.com/RegExr/

Sa parfaite pour tester rapidement si quelque chose se passe mal.

19voto

Pascal Thivent Points 295221

J'utilise les Kodos - Le Python Expression Régulière Débogueur:

Kodos est un Python GUI utilitaire pour la création, le test et le débogage des expressions régulières pour le langage de programmation Python. Kodos devrait aider tous les développeurs de manière efficace et sans effort de développer des expressions régulières en Python. Depuis le Python de la mise en œuvre d'expressions régulières est basé sur le PCRE standard, Kodos devraient bénéficier des développeurs dans d'autres langages de programmation qui adhèrent également à la PCRE standard (Perl, PHP, etc...).

(...)

alt text

Fonctionne sur Linux, Unix, Windows, Mac.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X