1

我正在尝试运行一个定义一些(复杂)正则表达式的脚本:https ://github.com/wo/opp-tools/blob/master/rules/Keywords.pm 。每当我包含此模块时,Perl 都会崩溃并显示消息“恐慌:reg_node overrun 试图在 rules/Keywords.pm 第 60 行发出 51”。这是 Ubuntu 12.04 上的 Perl v5.14.2。任何可能导致此问题的想法将不胜感激。

更新:这是导致问题的片段。

use strict;
use warnings;
use utf8;

my $re_address_word = qr/\b(?:
universit|center|centre|institute?|sciences?|college|research|
avenue|street|philosophy|professor|address|department|
umass
)\b/ix;

our $re_publication_word = qr/\b(?:
forthcoming|editors?|edited|publish\w*|press|volume
to\sappear\sin|draft|editor\w*|reprints?|excerpt|
circulation|cite
)\b/ix;

my $re_notitle = qr/
$re_address_word |
$re_publication_word |
\b(?:thanks?|
   @|
   [12]\d{3}|
   abstract
)/ix;

our $re_title = qr/^
(?!.*$re_notitle?.*)
\p{IsAlpha}    
/x;
4

1 回答 1

0

我今天在编译由多个表达式组成的正则表达式时遇到了同样的问题。下面的示例说明了产生问题的代码:

    my $cities = qr/(Foo1|Foo2|FooBarss)/;
    ## Solution change ss -> s[s]
    ## my $cities = qr/(Foo1|Foo2|FooBars[s])/;
    my $street = qr/(foo|bar|baz)/;

    $text =~ /$street \s+ $cities/;

解决方案是用 s[s] 替换文字 ss,它看起来很随机,我无法挖掘引用来支持它,但它对我有用。

于 2013-10-30T14:30:29.473 回答