当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 14 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个头痛的正则问题
帖子发表于 : 2010-11-12 9:56 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
路径如下
/home/some.site.com/savepath/xxx.tar.gz
xxx.tar.gz之前的路径的层数不固定,xxx这个名字和后缀名不顾定,路径名称也不固定

需要一个正则,匹配出最后一个/后面的第一个.
要求:只能用正则 (Perl正则 扩展正则都可以)
也许有点难,反正我是撞墙了,感觉捉襟见肘了。

btw:可以用echo /home/some.site.com/savepath/xxx.tar.gz|grep -P 'yourregex' 检测结果是不是正确
也许正则不能搞定它,总之各位试试


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-12 11:54 

注册: 2010-01-03 10:37
帖子: 114
送出感谢: 0 次
接收感谢: 0 次
递归打开目录查找


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-12 13:06 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
^.*/[^/.]*\.[^/]*$


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-12 13:44 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
晕 楼上2个一看就没搞明白情况, :em25 难道是哥表达的不清楚

那个路径就是一字符串,只匹配到那个.就可以了
-----------------------------------------------------------------------------------------
可惜正则的分组,没有忽略的行为 like锚位那样,该死的是锚位里又必须是具体的字符串


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-12 13:52 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
我忘记零宽度匹配怎么写了, 你改一下就是了嘛。。。


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-12 15:54 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
BigSnake.NET 写道:
我忘记零宽度匹配怎么写了, 你改一下就是了嘛。。。

没那么简单,我只是发现正则不是万能了。有点纠结,看有没有超级牛力诞生。


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-13 7:27 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
代码:
echo /home/some.site.com/savepath/xxx.tar.gz|grep -o -P 'y/\K[^.]*\.'

看帮助写的,没有测试,因为我的系统中的 grep 没有编译 -P 参数。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-13 7:30 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
上面那个忘了考虑必须是最后一个 /,还要改一改,现在没空研究。
在 vim 中是可以用
代码:
/\/\zs[^\/.]*\.\(.*\/\)\@!
搜索到你要内容的。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-13 11:35 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
正则我非常之恼火
各个软件之间,各个平台之间的正则都有区别
我都不知道什么时候用哪个语法的正则!


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-13 21:36 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
用 grep 的:
代码:
echo '/home/some.site.com/savepath/xxx.tar.gz' | grep -o -P '.*/\K[^./]*\.(?!.*/)'


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-13 23:21 
头像

注册: 2010-07-02 21:47
帖子: 476
送出感谢: 0 次
接收感谢: 0 次
用awk 很简单但是不知合不和楼主的意思
引用:
awk -F'/' '{print $NF }' | awk -F'.' '{print $1}'


_________________
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-14 21:12 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
代码:
tlcr: 0 庚寅年十月九日 21:07 ~
● perl -pe 's@^.+/(.+?\.).+$@\1@' <<< '/xxx/yyy/zzz/haha.xxx'
haha.
tlcr: 0 庚寅年十月九日 21:07 ~

不会用grep -P额。。。


_________________
代码:
] ls -ld //


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-15 10:43 

注册: 2008-11-08 18:34
帖子: 627
送出感谢: 0 次
接收感谢: 1
aerofox 写道:
用 grep 的:
代码:
echo '/home/some.site.com/savepath/xxx.tar.gz' | grep -o -P '.*/\K[^./]*\.(?!.*/)'

这个最后的结果是xxx. (可是我要的只是那个.)
tusooa 写道:
代码:
tlcr: 0 庚寅年十月九日 21:07 ~
● perl -pe 's@^.+/(.+?\.).+$@\1@' <<< '/xxx/yyy/zzz/haha.xxx'
haha.
tlcr: 0 庚寅年十月九日 21:07 ~

不会用grep -P额。。。


这个的结果是haha. (和上面的效果一样的,只要那个.)

不过aerofox 的正则里 提供了我想要的关键\K (\K :忽略这个符号之前的正则匹配的所有内容,即便\K出现在分组里面,分组和分组之前的正则匹配到的部分也全部被忽略了)

我把实现写一下
代码:
echo '/home/some.site.com/savepath/xxx.tar.gz'|grep -P '.*/[^.]*\K\.'   

用-P可以直观的看到匹配到哪个点,-Po就只显示点了

测试了一下其他语言 java 和 js中都不支持\K写法。 茶几阿!


_________________
气血鼓荡,身体发胀,偶飘上头,三时舒畅


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 一个头痛的正则问题
帖子发表于 : 2010-11-16 12:36 

注册: 2009-10-30 8:49
帖子: 167
送出感谢: 0 次
接收感谢: 0 次
gvim编辑器

/\\\@<=[^\\]*$


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 14 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译