提高正则表达式的可读性

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值