一个头痛的正则问题
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
一个头痛的正则问题
路径如下
/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' 检测结果是不是正确
也许正则不能搞定它,总之各位试试
/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' 检测结果是不是正确
也许正则不能搞定它,总之各位试试
气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 114
- 注册时间: 2010-01-03 10:37
Re: 一个头痛的正则问题
递归打开目录查找
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: 一个头痛的正则问题
晕 楼上2个一看就没搞明白情况, 难道是哥表达的不清楚
那个路径就是一字符串,只匹配到那个.就可以了
-----------------------------------------------------------------------------------------
可惜正则的分组,没有忽略的行为 like锚位那样,该死的是锚位里又必须是具体的字符串
那个路径就是一字符串,只匹配到那个.就可以了
-----------------------------------------------------------------------------------------
可惜正则的分组,没有忽略的行为 like锚位那样,该死的是锚位里又必须是具体的字符串
气血鼓荡,身体发胀,偶飘上头,三时舒畅
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 一个头痛的正则问题
我忘记零宽度匹配怎么写了, 你改一下就是了嘛。。。
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: 一个头痛的正则问题
没那么简单,我只是发现正则不是万能了。有点纠结,看有没有超级牛力诞生。BigSnake.NET 写了:我忘记零宽度匹配怎么写了, 你改一下就是了嘛。。。
气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 一个头痛的正则问题
代码: 全选
echo /home/some.site.com/savepath/xxx.tar.gz|grep -o -P 'y/\K[^.]*\.'
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 一个头痛的正则问题
上面那个忘了考虑必须是最后一个 /,还要改一改,现在没空研究。
在 vim 中是可以用 搜索到你要内容的。
在 vim 中是可以用
代码: 全选
/\/\zs[^\/.]*\.\(.*\/\)\@!
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: 一个头痛的正则问题
正则我非常之恼火
各个软件之间,各个平台之间的正则都有区别
我都不知道什么时候用哪个语法的正则!
各个软件之间,各个平台之间的正则都有区别
我都不知道什么时候用哪个语法的正则!
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: 一个头痛的正则问题
用 grep 的:
代码: 全选
echo '/home/some.site.com/savepath/xxx.tar.gz' | grep -o -P '.*/\K[^./]*\.(?!.*/)'
- IDRI
- 帖子: 476
- 注册时间: 2010-07-02 21:47
Re: 一个头痛的正则问题
用awk 很简单但是不知合不和楼主的意思
awk -F'/' '{print $NF }' | awk -F'.' '{print $1}'
对系统:更加了解; 对软件:更强,更新,更有趣
ubuntu--arch--gentoo
vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......
ubuntu--arch--gentoo
vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: 一个头痛的正则问题
代码: 全选
tlcr: 0 庚寅年十月九日 21:07 ~
● perl -pe 's@^.+/(.+?\.).+$@\1@' <<< '/xxx/yyy/zzz/haha.xxx'
haha.
tlcr: 0 庚寅年十月九日 21:07 ~
●
代码: 全选
] ls -ld //
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: 一个头痛的正则问题
这个最后的结果是xxx. (可是我要的只是那个.)aerofox 写了:用 grep 的:代码: 全选
echo '/home/some.site.com/savepath/xxx.tar.gz' | grep -o -P '.*/\K[^./]*\.(?!.*/)'
这个的结果是haha. (和上面的效果一样的,只要那个.)tusooa 写了:不会用grep -P额。。。代码: 全选
tlcr: 0 庚寅年十月九日 21:07 ~ ● perl -pe 's@^.+/(.+?\.).+$@\1@' <<< '/xxx/yyy/zzz/haha.xxx' haha. tlcr: 0 庚寅年十月九日 21:07 ~ ●
不过aerofox 的正则里 提供了我想要的关键\K (\K :忽略这个符号之前的正则匹配的所有内容,即便\K出现在分组里面,分组和分组之前的正则匹配到的部分也全部被忽略了)
我把实现写一下
代码: 全选
echo '/home/some.site.com/savepath/xxx.tar.gz'|grep -P '.*/[^.]*\K\.'
测试了一下其他语言 java 和 js中都不支持\K写法。 茶几阿!
气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 167
- 注册时间: 2009-10-30 8:49
Re: 一个头痛的正则问题
gvim编辑器
/\\\@<=[^\\]*$
/\\\@<=[^\\]*$