我只想使用正则表达式获取文件名,所以我一直在尝试简单的事情,例如
([^\.]*)
当然,只有当文件名具有一个扩展名时才有效。但如果是的话adfadsfads.blah.txt
我只是想adfadsfads.blah
。我怎样才能用正则表达式做到这一点?
关于大卫的问题“你为什么要使用正则表达式”,答案是“为了好玩”。事实上,我使用的代码很简单
length_of_ext = File.extname(filename).length
filename = filename[0,(filename.length-length_of_ext)]
但我喜欢尽可能学习正则表达式,因为它总是出现在极客鸡尾酒会上。
尝试这个:
(.+?)(\.[^.]*$|$)
这会:
- 捕获以点开头的文件名(例如
.logs
是一个名为.logs
,不是文件扩展名),这在 Unix 中很常见。
- 获取除最后一个点之外的所有内容:
foo.bar.jpeg
得到你foo.bar
.
- 处理不带点的文件:
secret-letter
得到你secret-letter
.
注意:正如评论者 j_random_hacker 所建议的那样,这会按照广告中的方式执行,但出于可读性目的,您可能希望在内容前面加上锚点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)