我用Regexp::Assemble在我的項目,但我不明白爲什麼這個小樣本不起作用:爲什麼Regexp :: Assemble使用這些簡單的正則表達式失敗?
#!/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;
我得到這個錯誤:
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.
編輯: 如果我只是打印生成的正則表達式($ ra-> as_string)我得到這個:
GLOBAL: (?:(run (?:pre|post)flight script for|((?:Configu|Prepa)ring volume) .+)
有一個「)」失蹤......
是的,它的工作沒有額外的括號...但這裏只是一個例子,我需要這些更爲複雜的正則表達式! – sebthebert
那麼,這個回答你寫它的問題... :)也許編輯您的問題給出這麼mething更復雜的例子嗎? – Ether
好的,我應該添加「以及如何修復,而不修改我的正則表達式」:)任何想法? – sebthebert