免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8344 | 回复: 14
打印 上一主题 下一主题

用perl如何实现与数组里的任一元素匹配? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-10 22:23 |只看该作者 |倒序浏览
比如我的字符串为 111_111_01_02这样  01_02这个字符段会有变化  我想当它和数组里的  (01_02,03_04,05_06)任一元素匹配的时候就算match  perl能实现么

其实就是SQL 里的 In()功能

论坛徽章:
0
2 [报告]
发表于 2012-03-10 22:59 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2012-03-10 23:41 |只看该作者
当然能

论坛徽章:
0
4 [报告]
发表于 2012-03-11 00:52 |只看该作者
能讲解一下实现的方法么?

论坛徽章:
0
5 [报告]
发表于 2012-03-11 09:22 |只看该作者
  1. use 5.010;
  2. "01_02" ~~ (01_02,03_04,05_06);
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-03-11 17:40 |只看该作者
这样好像不行也  只有最后一个可以判断到  前面的match判断不到
  1. use 5.010;


  2. @array=("-16_+09","-19_-66","-16_+06","+02_+05");

  3. foreach $array(@array){

  4.                 if($array ~~ ("-16_+09","-19_-06","-18_-08","+02_+05"))
  5.                 {$edged ="bad"} else {$edged ="good"}
  6.                
  7.                
  8.                 print "$array\t$edged\n";
  9.                 }
复制代码

论坛徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:4715-16赛季CBA联赛之天津
日期:2019-01-11 01:11:44
7 [报告]
发表于 2012-03-11 18:45 |只看该作者
本帖最后由 shijiang1130 于 2012-03-11 18:45 编辑
  1. @array=("-16_+09","-19_-66","-16_+06","+02_+05");
  2. foreach $array(@array){
  3.              if ( /'-16_+09'|'-19_-06'|'-18_-08'|'+02_+05'/ ){
  4.                 $edged ="bad"; }
  5.              else {
  6.                 $edged ="good"; }
  7.                 print "$array\t$edged\n";
  8.                 }
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-03-11 19:03 |只看该作者
shijiang1130 发表于 2012-03-11 18:45


这样只是把所有元素强行标成了good

论坛徽章:
0
9 [报告]
发表于 2012-03-11 19:17 |只看该作者
回复 6# MOMOyyNix


    sorry,是我的代码写的不规范,误导你直接依葫芦画瓢了。。
这样子说明下吧,perl里有个智能匹配的操作符叫 ~~
可以用来判断一个标量是否存在一个数组中,用法就是

$a ~~ @a

你自己查一下就知道了

论坛徽章:
30
水瓶座
日期:2014-08-22 21:06:3415-16赛季CBA联赛之新疆
日期:2015-12-19 19:05:48IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:31IT运维版块每日发帖之星
日期:2015-12-25 06:20:3315-16赛季CBA联赛之上海
日期:2016-04-15 19:51:31程序设计版块每日发帖之星
日期:2016-04-17 06:23:29程序设计版块每日发帖之星
日期:2016-04-23 06:20:00程序设计版块每日发帖之星
日期:2016-05-26 06:20:00每日论坛发贴之星
日期:2016-05-26 06:20:0015-16赛季CBA联赛之辽宁
日期:2017-02-16 23:59:4715-16赛季CBA联赛之天津
日期:2019-01-11 01:11:44
10 [报告]
发表于 2012-03-11 19:21 |只看该作者
  1. $a    = '111_111_01_02';
  2. $b    = substr( $a, -5, 5 );
  3. %hash = ();
  4. @test = ( '-16_+09', '-19_-06', '-18_-08', '+02_+05', '01_02' );
  5. foreach $item (@test) { $hash{$item} = 1; }
  6. print "ok\n" if exists( $hash{$b} );
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP