J'utilise Regexp::Assemble dans mon projet, mais je ne comprends pas pourquoi ce petit échantillon ne fonctionne pas:Pourquoi Regexp :: Assemble échoue-t-il avec ces simples regexps?
#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Assemble;
my $re1 = "(run (?:pre|post)flight script for .+)";
my $re2 = "((?:Configu|Prepa)ring volume .+)";
my $ra = Regexp::Assemble->new;
$ra->add($re1);
$ra->add($re2);
my $global = $ra->re;
print "GLOBAL: $global\n";
1;
Je suis cette erreur:
Unmatched (in regex; marked by <-- HERE in m/(<-- HERE ?:(run (?:pre|post)flight script for|((?:Configu|Prepa)ring volume) .+)/ at /usr/share/perl5/Regexp/Assemble.pm line 1003.
Edit: Si je juste imprimer le Regexp (AD- $> as_string) résultant je suis arrivé ceci:
GLOBAL: (?:(run (?:pre|post)flight script for|((?:Configu|Prepa)ring volume) .+)
Il y a un ')' manquante ...
Oui, il fonctionne sans les parenthèses supplémentaires ... mais voici un exemple, je besoin de ces plus complexes dans regexps! – sebthebert
Eh bien, cela répond à la question que vous avez écrite ... :) peut-être éditer votre question pour donner un exemple de façon plus compliquée? – Ether
Ok, je devrais ajouter "et comment puis-je résoudre ce problème sans modifier mes expressions rationnelles" :) Une idée? – sebthebert