簡體   English   中英

在Perl中編譯正則表達式時“ reg_node overrun”

[英]“reg_node overrun” when compiling regular expressions in perl

我正在嘗試運行定義一些(復雜)正則表達式的腳本: https : //github.com/wo/opp-tools/blob/master/rules/Keywords.pm 每當我包含此模塊時,Perl都會崩潰,並顯示消息“ panic:reg_node溢出,試圖在rule / 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;

今天,在編譯由多個表達式組成的正則表達式時遇到了同樣的問題。 下面的示例說明了生成問題的代碼:

    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,這似乎是隨機的,我無法挖掘支持它的引用,但對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM