Другой подход заключается в том, чтобы вместо этого использовать Perl Regexp :: Optimizer [GG] Дэн Когай.
use Regexp::Optimizer;
my $o = Regexp::Optimizer->new->optimize(qr/foobar|fooxar|foozap/);
# $re is now qr/foo(?:[bx]ar|zap)/
.. сначала оптимизируйте и затем отбросьте все избыточные шаблоны.
Возможно, еще более полезно помочь Ron Savage's Regexp :: Assemble . Он позволяет собирать произвольное количество регулярных выражений в одно регулярное выражение, которое соответствует всем, что соответствует отдельным RE. * Или комбинация обоих.
* Однако вам нужно знать некоторые различия между Perl и Java или другие PCRE-ароматы.