提高正则表达式的可读性

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:57   1541   0

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" ;

转载于:https://www.cnblogs.com/tjxwg/archive/2013/04/07/3003343.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP