巧妙的无法想象啊!
举个例子,大家就都能理解了。 比如,$_ 设为4,那么1x$_ 就是1111,而这个1111正好和 (^(11+?)\1+$)匹配上了,我们的条件是如果不匹配( !~ )才能print $_ 是素数喔。所以一旦和后边的正则匹配上了,就说明不是素数,也就是说4不是素数。(*^__^*) 嘻嘻…… ------------------ 原始邮件 ------------------ 发件人: "De-Jian Zhao"<[email protected]>; 发送时间: 2011年11月27日(星期天) 下午3:12 收件人: "perlchina"<[email protected]>; 主题: Re: [PerlChina] 一句很妙的perl�_本(通�^正�t表�_式判�嗨��担� 算法非常巧妙!将数学问题转化成了文字匹配问题,正好发挥regex长处。 On 2011-11-26 18:22, Shou Ya wrote: > 在perl1line上看到的: > > > # Check if a number is a prime > perl -lne '(1x$_) !~ /^1?$|^(11+?)\1+$/ && print "$_ is prime"' > > > 分析了一下,它先把一��字符(�@�Y是'1')重�}多次,��成一��字串。 > > 然後�δ���正�t表�_式�M行,匹配,那��正�t�碛�����部分,前面是匹配'1'或者'',也就是��1和零�L度的字串返回真。 > > 右��的部分(^(11+?)\1+$)�_始匹配2以上�L度的字串,�K且�χ��M行1+次重�},看是否有匹配上的。在前半部分匹配�r用�卸璧姆椒ǎ��s束匹配字串的�L度是�f增�y��的,事��上�@利用��婪法也可以匹配成功,只是可能�Υ蠖��邓����碚f�r慢一些的。如果有成功匹配,代表了�@���L度(也就是�@���底郑┲辽儆�����因子,分�e是匹配到的�L度和重�}的次��+1(��包括左��的那一部分),那�N也就�f明�@���挡皇撬��盗恕� > > 我�����]有想到�^正�t表�_式��有�@��作用,我一直�J��正�t��理文字是相����大,�]想到它竟然��可以被用在���W上,真出乎意料。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。 -- 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。 要向此网上论坛发帖,请发送电子邮件至 [email protected]。 要取消订阅此网上论坛,请发送电子邮件至 [email protected]。 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
