简单代码:
use 5.014;
use warnings;
my $re = <DATA>;
chomp $re;
my $re2 = qr/$re/;
say $re2;
__END__
^\w$
结果:(?^u:^\w$) #added the (?^u:
是否有任何正确的方法来反编译 $re2 以取回原始正则表达式?动机:正则表达式是一个配置值,所以需要:
但是不能保存编译的正则表达式供以后使用,因为在每次编译中,正则表达式都用 (?^u: 扩展,所以经过几个循环后,我以如下结尾:
(?^u:(?^u:(?^u:(?^u:(?^u:^\w$)))))
因此问题是:最佳答案
虽然我会保留字符串副本以供数据使用,然后在需要使用时编译副本,但您也可以使用 regexp_pattern核心功能re
模块返回用于创建已编译正则表达式的模式:
use re 'regexp_pattern';
print regexp_pattern qr/^\w$/;
打印
^\w$
关于perl:如何从预编译版本中获取原始正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8330711/