提高正则表达式的可读性

1.使用辅助空白字符和注释

/x选项可以同时用在匹配区和替换区,此时正则表达式解析器会忽略空白字符(被反斜杠转义的空白字符除外),同时忽略注释。

my ($str) =~  m /
                         (                          # $1 开始
                         *                             #  双引号字串开始

                          (?:
                                 \\\W               | # 特殊字符,比如 \+
                                 \\x[0-9a-fA-F]{2}  | # 十六进制,比如\xDE
                                 \\[0-3][0-7]{2}    | # 八进制,  比如\0377
                                 [^"\\]               #普通字符
                          )*
                         “
                      )                               # $1结束
                     /x ;

2.将复杂的正则表达式化整为零

正则表达式的优先级次于双引号内插变量。 我们可以利用这一点,用变量构造正则表达式。

my $whole = do {
    my $num = qr/[0-9]+/;
    my $word = qr/[a-zA-Z_]+/;
    my $space = qr/[ ]+/;

    qr/($num|$word|$space)/gx;

};

$_="Testing 1 2 3";
my @split = /$whole/ ;
print join(":",@split) , "\n" ;
posted @ 2013-04-07 08:26  新闻官  阅读(338)  评论(0编辑  收藏  举报