使用 perl 的 Regexp::Optimizer 可以实现
use Regexp::Optimizer;
my $o = Regexp::Optimizer->new->optimize(qr/foobar|fooxar|foozap/);
# $re is now qr/foo(?:[bx]ar|zap)/
通过在未找到公共前缀(在本例中为“foo”)时不继续匹配,可以获得很好的性能,因为常见的正则表达式引擎是 NFA。我想知道 java 世界是否有对应的 Regexp::Optimizer?