免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3925 | 回复: 16

请教高手,一个perl中的正则表达式的问题? [复制链接]

论坛徽章:
0
发表于 2010-08-10 18:09 |显示全部楼层
我想把绝对路径中的最后一个目录名取出来,比如/usr/java/jdk1.6.10_10 目录中的jdk1.6.10_10提取出来,不知道用什么正则匹配,求教?
ps,全是字符的好弄,但是夹杂数字,下划线什么的,怎么弄呢?

论坛徽章:
0
发表于 2010-08-10 18:28 |显示全部楼层
basename('/usr/java/jdk1.6.10_10');

试下这个怎么样

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
发表于 2010-08-10 19:12 |显示全部楼层
/([^\/]+)$/

论坛徽章:
0
发表于 2010-08-10 20:03 |显示全部楼层
学习啦,我跑去用split () 分割字符串,然后取最后一个.

论坛徽章:
0
发表于 2010-08-11 09:44 |显示全部楼层
试试这个?
/([^\/]+)$/
$1即为所求

论坛徽章:
0
发表于 2010-08-11 09:45 |显示全部楼层
啊…发现和3L的一样…………汗……~

论坛徽章:
0
发表于 2010-08-11 10:12 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2010-08-11 10:27 |显示全部楼层
my $fullpath = "/usr/java/jdk1.6.10_10";
my ($path) = ($fullpath =~ /.*\/(.*)/);
print $path;

我以前都是这么写的,不一定好,但能达到目的。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2010-08-11 12:27 |显示全部楼层
回复  g84ch


    这个还用的着正则哦,直接这样就可以了,例如
heqidz 发表于 2010-08-11 10:12



你这话说反了,应该说“这还用的着模块?”用正则表达式更简洁。
但是,如果会有很复杂很多的文件名要处理,建议还是模块。如果很少那就还是正则表达式比较快。

论坛徽章:
0
发表于 2010-08-12 11:11 |显示全部楼层
感谢ls各位的解答,谢谢各位了。。。我还想问一个正则表达式的问题,我有一个变量$a的字符串(保存的是文件名),想把$b中与$a给匹配的行找出来,写了如下的正则:
$b =~ /$a/ ;
但是文件名中如果出现"+,*,?"等符号,就不能正确匹配,它会认为是重复前面的字符。我想请问,是否在正则匹配的时候,能够加一些如不区分大小写/i这样的字符,来忽略字符串中“+,*,?”等的特殊意思吗?求教各位了。。。再次感谢各位的解答~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP