perl 匹配递增数
时间:2010-09-21
来源:互联网
ABC: ABC为递增号码,例:123、234...678;
如写一个正则式匹配一下呢?
我写了好一会都没有搞定。
作者: bintre 发布时间: 2010-09-21
print if /^(\d)(\d)(\d)$/ && $2==$1+1 && $3==$2+1
作者: 99超人 发布时间: 2010-09-21
谢谢,学习了。
作者: bintre 发布时间: 2010-09-21
代码如下:
- #!/usr/bin/perl
- use strict;
- use warnings;
-
- my $lala = '1452905789321790';
-
- if ($lala =~ /(\d)((??{$1+1}))((??{$1+2}))/){
- print "$1$2$3\n";
- }
这个(??{CODE}) 表示把CODE的执行结果插入正则表达式做匹配,$1是前面(\d)的匹配结果.
程序结果如下:
- 789
作者: 珞水的大叔 发布时间: 2010-09-21
漂亮。不错,所以我就喜欢用perl。
作者: bintre 发布时间: 2010-09-21
(??{CODE})
这种写法哪本书有介绍过,从来没看到过,不过确实好用
作者: 99超人 发布时间: 2010-09-21
?: 表示非捕获符号。就是什么也不匹配。
(?!pattern) 如果正则表达式在后面不匹配 pattern ,才会开始匹配。如/foo(?!bar)/,只有当出现 foo,并且后面不出现 bar 时才开始匹配.
Type Regex Successful if the enclosed subexpression ...
Positive Lookbehind (?<=......) successful if can match to the left #例子:"abcdefg" =~ m/(?<=c)/;
print $`,$&,$';
Negative Lookbehind (?<!......) successful if can not match to the left
Positive Lookahead (?=......) successful if can match to the right #例子: "abcdefg" =~ m/(?=c)/;
print $`,$&,$';
Negative Lookahead (?!......) successful if can not match to the right
函数substr 也能达到目的
作者: leigh111 发布时间: 2010-09-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28