[英]“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.