python perl 正则_为什么说perl的正则表达式功能比Python强大

展开全部

最大的分别就是.. 速度!

从各种的测试都e69da5e887aa3231313335323631343130323136353331333363353763显示, perl 的正则处理依然是最快的 (不只比 python) , 下面的实测可以去看看https: 斜斜 stuffivelearned 点 org 斜 doku.php?id=programming%3ageneral%3aphpvspythonvsperl

其实 perl 本来就是正则的鼻祖, 它最初的开发的原意很大程度也是为了正则

至於为甚麼比 python 快其实不难想像Perl 不是 OO 语言(虽然有 OO 的玩法), 所以用到正则时, 正接就开始跑, 不用继承一堆有的没的属性和方法. 至於 python 还要先把字串 compile 了做一个物件, 才开始做正则, 在底层自然又多了一重功夫

Python 的正则要靠模块来完成, Perl 的正则却已在 perl 解释器的心脏里, 谁会起动的更快就很明显了. 当然, 除了 C Python 还算最快之外, 其他如 JPython, Iron Python 这些要靠 framework 来起动的就必然更慢了

另外就是... 连击和助攻, perl 的正则很可以直接当成 expression (=~ 和 !~ ) 来用, 如:use utf8;

$wantId = "陈大文";

die "帐号不能用奇怪字符" unless $wantId =~ /^[\w\d]+$/ ;

#或者

%user = (

1 => { Name => "王子" },

2 => { Name => "小王子" }

3 => { Name => "王妹" } );

@姓王的 = grep { $user{$_}{Name} =~ /^王/ } keys %user;

# @姓王的 = ( 1, 3)

# 又或者

%mask = ( 1 => "M", 2 => "X", 3 => "B" );

$password = "321"; #普通密码

$maskedPw = undef; #加密密码

$password =~ s/(.)/$maskPw .= $mask($1)/eg;

# maskedPw = "BXM"上面几例, 试问用 python 要写多少行才做到用样的效果呢.. 不过, 这多少语言层次的问题, 姑且另作别论了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值