免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: beyondlee1
打印 上一主题 下一主题

提取数字 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2016-07-28 21:31 |只看该作者
可以了,没有问题。

非常感谢,我学PERL没多久,感觉你的代码太深奥了。有一些找资料都没有找到解释

谢谢~  有什么推荐的书看吗?

论坛徽章:
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
22 [报告]
发表于 2016-07-28 22:28 |只看该作者
Perl 语言入门, 这是我现在正在学习的入门书籍.

论坛徽章:
0
23 [报告]
发表于 2016-07-29 13:53 |只看该作者
有新情况,看看大侠有没有时间看看

$str="锡厚:表面锡厚1-40um,孔内锡厚最小7.5um,孔拐角处锡厚最小1um;锡面积(pnl):a:0.557sq/ft(13%),b:0.279sq/ft(13%);钻咀为0.4和0.5mm的via孔接受锡珠入孔";

之前的要求不变,但出新变化,就是出现a:0.557sq/ft(13%),b:0.279sq/ft(13%),要求将其中的0.557+0.279,谢谢
现在只提取到0.557

如果出现这种情况,我要这两个数的相加值.

感谢!

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
24 [报告]
发表于 2016-07-29 14:12 |只看该作者


哥,麻烦你当一个脚本写,我好移植.

论坛徽章:
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
25 [报告]
发表于 2016-07-29 14:42 |只看该作者
回复 23# beyondlee1
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub get_values{
  5.     local $_ = pop;
  6.     my @aData = />=([\d.]+)/ ? $1 : /([\d.]+)/;
  7.     $aData[1] += $1 while (m~\b([\d.]+)sq/ft~g);
  8.     \@aData;
  9. }

  10. my $str = "锡厚:工艺要求QFP位置:2.5-40um,单点2.0um,平均>=2.6u';;锡条:SN100N(指定);锡面积(pnl):0.155sq/ft(8.52%)";
  11. $str = "锡厚:表面锡厚1-40um,孔内锡厚最小7.5um,孔拐角处锡厚最小1um;锡面积(pnl):a:0.557sq/ft(13%),b:0.279sq/ft(13%);钻咀为0.4和0.5mm的via孔接受锡珠入孔";
  12. my $ra = get_values ($str);
  13. print "@$ra\n";
复制代码
1 0.836

   

论坛徽章:
0
26 [报告]
发表于 2016-07-29 15:19 |只看该作者
可以了,谢谢~!

但有新情况,如 $str1="无铅锡型号:SN100CL喷锡厚度:2-36um喷锡面积:0.11ft/sq(set)";

直接提取100,后面的忽略了。

2和0.11?

论坛徽章:
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
27 [报告]
发表于 2016-07-29 15:54 |只看该作者
回复 26# beyondlee1
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub get_values{
  5.     local $_ = pop;
  6.     my ($v1, $v2);
  7.     ($v1) = />=([\d.]+)/ ? $1 : do {/锡厚/g and /([\d.]+)/g};
  8.     $v2 += $1 while (m~\b([\d.]+)(?:sq/ft|ft/sq)~g);
  9.     [$v1, $v2];
  10. }

  11. my $str = "锡厚:工艺要求QFP位置:2.5-40um,单点2.0um,平均>=2.6u';;锡条:SN100N(指定);锡面积(pnl):0.155sq/ft(8.52%)";
  12. $str = "锡厚:表面锡厚1-40um,孔内锡厚最小7.5um,孔拐角处锡厚最小1um;锡面积(pnl):a:0.557sq/ft(13%),b:0.279sq/ft(13%);钻咀为0.4和0.5mm的via孔接受锡珠入孔";
  13. $str = "无铅锡型号:SN100CL喷锡厚度:2-36um喷锡面积:0.11ft/sq(set)";
  14. my $ra = get_values ($str);
  15. print "@$ra\n";
复制代码
perl abc.pl
-------------------------------------------------
2 0.11

   

论坛徽章:
0
28 [报告]
发表于 2016-07-29 16:20 |只看该作者
$str="厂内管控:锡厚:1-40um 喷锡面积(PNL):0.378spft(6.7%)";
my $ra = get_values ($str);
print "@$ra\n";

出现此错误:
Use of uninitialized value in join or string at ef3.pl line 18.

有空帮忙看看,谢谢~

论坛徽章:
0
29 [报告]
发表于 2016-07-29 16:38 |只看该作者
知道原因了,谢谢~,少量的数据我手动查看一下吧,太乱了,少量一数据完全没有规律。

谢谢~

论坛徽章:
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
30 [报告]
发表于 2016-07-29 17:54 |只看该作者
本帖最后由 sunzhiguolu 于 2016-07-29 17:55 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. sub get_values{
  5.     local $_ = pop;
  6.     my ($v1, $v2);
  7.     ($v1) = />=([\d.]+)/ ? $1 : do {/锡厚/g and /([\d.]+)/g};
  8.     $v2 += $1 while (m~\b([\d.]+)(?:sq/ft|ft/sq|spft)~g);
  9.     [$v1, $v2];
  10. }

  11. my @aData;
  12. $aData[0] = "锡厚:工艺要求QFP位置:2.5-40um,单点2.0um,平均>=2.6u';;锡条:SN100N(指定);锡面积(pnl):0.155sq/ft(8.52%)";
  13. $aData[1] = "锡厚:表面锡厚1-40um,孔内锡厚最小7.5um,孔拐角处锡厚最小1um;锡面积(pnl):a:0.557sq/ft(13%),b:0.279sq/ft(13%);钻咀为0.4和0.5mm的via孔接受锡珠入孔";
  14. $aData[2] = "无铅锡型号:SN100CL喷锡厚度:2-36um喷锡面积:0.11ft/sq(set)";
  15. $aData[3] = "厂内管控:锡厚:1-40um 喷锡面积(PNL):0.378spft(6.7%)";

  16. print "@{get_values($_)}\n" for @aData;
复制代码
perl abc.pl
-------------------------------------------------
2.6 0.155
1 0.836
2 0.11
1 0.378
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP