免费注册 查看新帖 |

Chinaunix

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

求教:perl获取匹配字符串的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-02 14:38 |只看该作者 |倒序浏览
20可用积分
比如字符串是/c/prog/d/s3.exe /t
现在我想获取s3.exe或者s3然后返回给一个变量,怎样用模式匹配做呢?
s3不是固定的,可能是wx,也可能是其他的字符串。
--------------------------------------------------------------
还是C快,perl还不会呀。

论坛徽章:
0
2 [报告]
发表于 2008-07-02 14:38 |只看该作者

  1. $text = "/c/prog/d/s3.exe /t";

  2. @array = split/\//, $text;
  3. foreach (@array)
  4. {
  5.     if (/exe/)
  6.     {
  7.         print $_, "\n";
  8.         last;
  9.     }
  10. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-07-02 14:57 |只看该作者
正则表达式可以解决!
--------LZ应该分我10分

论坛徽章:
0
4 [报告]
发表于 2008-07-02 15:14 |只看该作者
原帖由 mouse.rice 于 2008-7-2 14:57 发表
正则表达式可以解决!
--------LZ应该分我10分

我也知道模式匹配可以,你告诉我怎么做呀?写出来只要OK就给分

论坛徽章:
0
5 [报告]
发表于 2008-07-02 15:24 |只看该作者

  1. $text = "/c/prog/d/s3.exe /t";

  2. @array = split/\//, $text;
  3. print $array[4], "\n";
复制代码


perl 上面这个文件.

论坛徽章:
0
6 [报告]
发表于 2008-07-02 15:52 |只看该作者
原帖由 converse 于 2008-7-2 15:24 发表

$text = "/c/prog/d/s3.exe /t";

@array = split/\//, $text;
print $array[4], "\n";


perl 上面这个文件.

对不起,路径长度不定,因此我不知道s3.exe一定是在第4的位置。还有其他方法吗?
要是C,我xxxx一分钟内搞定它。
你倒是给了我一个提示,split然后查找每一个数组元素,直到第一次出现.exe的那个就是我想要的。
貌似可以,不过我想更简单点或者更快点的方法。

论坛徽章:
0
7 [报告]
发表于 2008-07-02 16:06 |只看该作者

回复 #5 UnixZC 的帖子

老大 麻烦您把问题描述清楚行吗?

论坛徽章:
0
8 [报告]
发表于 2008-07-02 16:08 |只看该作者
原帖由 converse 于 2008-7-2 16:06 发表
老大 麻烦您把问题描述清楚行吗?

先给你10分,我已经用你提示的那种方法先搞定了,然后等等有没有更好的方法。

论坛徽章:
0
9 [报告]
发表于 2008-07-02 16:23 |只看该作者
原帖由 UnixZC 于 2008-7-2 15:52 发表

对不起,路径长度不定,因此我不知道s3.exe一定是在第4的位置。还有其他方法吗?
要是C,我xxxx一分钟内搞定它。
你倒是给了我一个提示,split然后查找每一个数组元素,直到第一次出现.exe的那个就 ...



学FLW:LZ是临时用户?
就按上面converse老大讲的方法做:
my $str="/c/prog/d/s3.exe /t";
my @lines = split /\//,$str;
for (@lines){
   print if /exe/;
}



昏,才看到2楼有答案了

那就接着贴个正则方法吧:
my $str="/c/prog/d/s3.exe /t";
print $1 if $str=~/\/([^\/]+exe)/;


There is more than one way to do it!

[ 本帖最后由 mouse.rice 于 2008-7-2 16:45 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-07-03 12:51 |只看该作者
终于看到正则了.
path可能出现空格, split不保险
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP