免费注册 查看新帖 |

Chinaunix

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

正则表达式的名字匹配问题 [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
1 [报告]
发表于 2017-03-22 17:17 |显示全部楼层
本帖最后由 sunzhiguolu 于 2017-03-22 17:22 编辑

1.> A 文件有多大?

代码中有个地方不是很明白:
  1. foreach my $key (%hash){
  2.    #...
  3. }
复制代码

能否解释下?

(-)-Captopril
Captopril (JP15/USP/INN)
Captopril (JP16/USP/INN)
Captopril [USAN:INN:BAN:JAN]
Captopril [USAN:USP:INN:BAN:JAN]
Captoprilum [INN-Latin]
L-Captopril
D-Captopril
Captopril-D7
Captopril-d3
以上这部分内容, 来自哪个文件? B 文件的文件结构怎样?
如果方便的话, 能否将 A, B 两个文件中具有代表性的数据示例贴出一小部分 并将所需结果贴出来, 方便观察些。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2017-03-22 18:19 |显示全部楼层
如果单纯从代码的角度看你写的代码,效能瓶颈来自哪里你应该最清楚了。

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
3 [报告]
发表于 2017-03-23 12:34 |显示全部楼层
回复 1# wx2wx
示例代码:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hData = ();
  5. while (<DATA>){
  6.     last if (/\A\s*\z/);
  7.     s/\A\s+|\s+\z//g;
  8.     $hData{$_}++;
  9. }

  10. my $k = 'INN';
  11. while (<DATA>){
  12.     if (/\A(?<id>\w++)\s[\[(](?<keys>[^\])]+)/ and $hData{$+{id}}){
  13.         my %hKeys = map {$_, 1} split (/\W/, $+{keys});
  14.         print if ($hKeys{$k});
  15.     }
  16. }

  17. __DATA__
  18. (-)-atenolol
  19. (-)-catechin
  20. (-)-isoprenaline
  21. (-)-MK-801
  22. (+)-chelidonine
  23. (+)-isoprenaline
  24. (+/-)-catechin
  25. Captopril

  26. (-)-Captopril
  27. Captopril (JP15/USP/INN)
  28. Captopril (JP16/USP/INN)
  29. Captopril [USAN:INN:BAN:JAN]
  30. Captopril [USAN:USP:INN:BAN:JAN]
  31. Captoprilum [INN-Latin]
  32. L-Captopril
  33. D-Captopril
  34. Captopril-D7
  35. Captopril-d3

复制代码
perl abc.pl
------------------
Captopril (JP15/USP/INN)
Captopril (JP16/USP/INN)
Captopril [USAN:INN:BAN:JAN]
Captopril [USAN:USP:INN:BAN:JAN]


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP