免费注册 查看新帖 |

Chinaunix

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

正则---请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-11-15 10:30 |只看该作者 |倒序浏览
如下两个字符串:

$str1="双面阻焊,油墨型号:ZM-400 WF(指定);颜色:绿色;油墨特性:感光;油墨厚度:厂内管控20+/-5um;导电孔方式:塞孔;无卤素板材,阻焊不可退洗,如要退洗,请提出申请";
$str2="双面阻焊,油墨型号SR2000 LF03HF(指定),油墨厚度:10 30um;颜色:绿色;油墨特性:感光;导电孔方式:开窗/塞孔/单面开窗(L4),单面塞孔;连塞带印,塞孔位置未开窗面不允许聚油,保证孔内有油允许透绿光,不允许透白光,具体位置见客户图纸2;见备注3";

我修改之前的抄的别人的自定义函数如下:

sub get_values{
    local $_ = pop;
    my $v1;
    ($v1) = />=([\d.]+)/ ? $1 : do {/油墨型号/g and /([A-Za-z0-9\s\-\(\)\指定\(\)]+)/g};
#    $v2 += $1 while (m~\b([\d.]+)(?:sq/ft|ft/sq)~g);
    return $v1;
}


可是为什么,得出两个不同的结果,而且还带个“?",

print "油墨型号--->",get_values($str1),"\n";
结果:油墨型号--->?



print "油墨型号--->",get_values($str2),"\n";

结果:油墨型号--->SR2000 LF03HF(指定)?

望高手指教,谢谢~!

论坛徽章:
0
2 [报告]
发表于 2016-11-15 10:33 |只看该作者
注:我只要得出类似"SR2000 LF03HF(指定)"的结果,要考虑格式可能为"SR2000-LF03HF (指定)",中间有个"-".

论坛徽章:
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 [报告]
发表于 2016-11-15 11:24 |只看该作者
本帖最后由 sunzhiguolu 于 2016-11-15 11:32 编辑

你希望得到的结果是什么, 贴出来看下? (将处理的条件 详细说明下)

论坛徽章:
0
4 [报告]
发表于 2016-11-15 11:41 |只看该作者
我在二楼已经注明了,
重复一遍
我想要得到“SR2000 LF03 HF(指定)"这个格式的结果,有时候”指定“二字没有可以忽略,要考虑格式可能为"SR2000-LF03-HF (指定)",中间有个"-".

现只有以下三种格式:
$str1="双面阻焊,油墨型号:ZM-400 WF(指定);颜色:绿色;油墨特性:感光;油墨厚度:厂内管控20+/-5um;导电孔方式:塞孔;无卤素板材,阻焊不可退洗,如要退洗,请提出申请";
$str2="双面阻焊,油墨型号SR2000 LF03HF(指定),油墨厚度:10 30um;颜色:绿色;油墨特性:感光;导电孔方式:开窗/塞孔/单面开窗(L4),单面塞孔;连塞带印,塞孔位置未开窗面不允许聚油,保证孔内有油允许透绿光,不允许透白光,具体位置见客户图纸2;见备注3";
$str3="颜色:白色 油墨型号(指定):ZM 400WF 双面字符(SET内为单面字符:SSB面) 我司UL位置:SST/SSB 周期位置:SST/SSB,周期:周年(54个/PNL) 模穴号位置:SST/SSB 厂内料号E0I64084B PNL内为阴阳拼版";

谢谢~!

论坛徽章:
0
5 [报告]
发表于 2016-11-15 11:47 |只看该作者
总之:将油墨型号后面的"SR2000 LF03 HF(指定)"这个格式的型号读取出来。

谢谢~!

论坛徽章:
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
6 [报告]
发表于 2016-11-15 13:52 |只看该作者
本帖最后由 sunzhiguolu 于 2016-11-15 13:54 编辑
  1. /油墨型号(?:(?![a-z0-9]).)*((?:\s*[-a-z0-9]+)+)/i
复制代码

论坛徽章:
0
7 [报告]
发表于 2016-11-15 16:41 |只看该作者
不行啊

我做成函数,这样,得以只有一个数字1.
sub get_values{
    my $v1=shift;
    $v1 =$v1=~/油墨型号(??![a-z0-9]).)*((?:\s*[-a-z0-9]+)+)/i;
    return $v1;
}

论坛徽章:
0
8 [报告]
发表于 2016-11-15 18:32 |只看该作者
  1. /油墨型号(?:(?![a-z0-9]).)*((?:\s*[-a-z0-9]+)+)/i
复制代码
不行

论坛徽章:
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
9 [报告]
发表于 2016-11-15 19:12 |只看该作者
  1. sub get_values{
  2.     my $val = shift;
  3.     ($val) = $val =~ /油墨型号(?:(?![a-z0-9]).)*((?:\s*[-a-z0-9]+)+)/i;
  4.     return $val;
  5. }
复制代码

论坛徽章:
0
10 [报告]
发表于 2016-11-15 22:30 |只看该作者
本帖最后由 beyondlee1 于 2016-11-15 22:43 编辑

谢谢,这个还行
三个字符串输出结果:
ZM-400 WF
SR2000 LF03HF
ZM 400WF


但我还需要后的"(指定)",有办法吗?

还有,注意"()",有时候是全角状态的"()",
我修改成如:
  1. sub get_values{
  2.        my $val = shift;
  3.       ($val) = $val =~ /油墨型号(?:(?![a-z0-9]).)*((?:\s*[-a-z0-9()(指定)]+)+)/i;
  4.       return $val;
  5. }
复制代码
结果为:ZM-400 WF(指定)
SR2000 LF03HF(指定)?
ZM 400WF

后面带个?号是怎么回事?

可以再看看吗?

感谢~!


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP