首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

正则表达式数字取非怎么办

2012-09-16 
正则表达式数字取非怎么处理?有一部分数据如下,我想将其中第二个字段不是12的数据给删除,正则表达式是 s/^

正则表达式数字取非怎么处理?
有一部分数据如下,我想将其中第二个字段不是12的数据给删除,正则表达式是 s/^\d+,[^1][^2],.*//g 满足不了我的需求,请问一下如何写能将非12的全部替换?

123123131,12,http://www.baidu.com
123123132,13,http://www.baidu.com
123123133,01,http://www.baidu.com
123123135,02,http://www.baidu.com
123123134,04,http://www.baidu.com
123123136,08,http://www.baidu.com
123123137,22,http://www.baidu.com

[解决办法]
参考下这个吧
http://blog.csdn.net/jasonhwang/article/details/2333519
[解决办法]
s/^\d+,([1][^2]|[^1][0-9]),.*\n//gm;
[解决办法]
while(<DATA>){
/^\d+,(\d+),/;
if($1==12){print $_;}
}

__DATA__
123123131,12,http://www.baidu.com
123123132,13,http://www.baidu.com
123123133,01,http://www.baidu.com
123123135,02,http://www.baidu.com
123123134,04,http://www.baidu.com
123123136,08,http://www.baidu.com
123123137,22,http://www.baidu.com
[解决办法]
哦,3楼的还有一点问题:就是如果是最后一行,那么\n得不到匹配。修改了一下,如下

Perl code
#!/usr/bin/perluse 5.014;my $input = '123123131,12,http://www.baidu.com123123132,13,http://www.baidu.com123123133,01,http://www.baidu.com123123135,02,http://www.baidu.com723123135,12,http://www.baidu.com123123134,04,http://www.baidu.com123123136,08,http://www.baidu.com123123137,15,http://www.baidu.com';my $result = ($input =~ s/    ^\d+                        #123123123数字串匹配    ,([1][^2]|[^1][0-9]),        #匹配非,12,的字符串    .*                            #匹配http字符串    (\n)?                        #末尾的换行符需要匹配,但最后一行没有换行符,所以换行符可能不存在(不然最后那行不能删除)    //gmrx);                    #g全局替换,m多行替换,r返回值放入$result, x忽略空格say $input;say '--------------------------------------';say $result; 

热点排行