如何创建一个正则表达式模式,引用一个稍后将在程序中创建的变量

时间:2014-03-11 00:25:38

标签: regex perl

我正在编写文件解析工具,为了可维护性/测试,我希望在脚本开头定义所有正则表达式模式字符串。

我知道如何在regex字符串中使用变量引用,但是在创建字符串时这些引用会被填充。在设置变量之前,是否有其他方法可以在模式中引用变量?

在我的脚本顶部:

my $p_delimiter = "^.{105}(.)";  # grab the 106th character, thats the file delimiter i need of the rest of the script
my $p_type = "(?:^|$d)ST([^\*])[\w\1]*?(\d{3})\1";  # later in script I name the delimiter caught by the $p_delimiter pattern as $d, and use it here to find the file type
my $p_check_num = "(^|$d)TRN\*\d\*([a-zA-Z0-9]{1,30})\*";  # I use the delimiter $d here as well

我可以通过在创建$ d后声明$ p_type和$ p_check_num来解决这个问题,但是还有另一种方法可以解决这个问题(" \\ $ d"或其他什么)所以我可以保留所有的模式在脚本的顶部?感谢

0 个答案:

没有答案