正则表达式从匹配中获取文件名/排除某些字符

时间:2013-09-28 05:55:04

标签: ruby regex io

这是我的档案:

name.extension

这是我的正则表达式:

.*[.]

然而,这与文件名和句点匹配:

#=> "filename."

如何排除期限以实现:

#=> "filename"

我正在使用Ruby。

4 个答案:

答案 0 :(得分:3)

您可以使用File课程方法File#basenameFile#extname

file= "ruby.rb"
File.basename(file,File.extname(file))
# => "ruby"

答案 1 :(得分:1)

你只需要一个否定的角色类:

^[^.]*

这将匹配所有内容,从字符串的开头到找到句点(但不包括它)。

答案 2 :(得分:0)

匹配到最后一个“。”

 "filen.ame.extension"[/.*(?=\.)/]
  # => filen.ame

首先匹配“。”

 "filen.ame.extension"[/.*?(?=\.)/]
 # => filen

答案 3 :(得分:0)

或者,您可以在正则表达式中创建子组,只需选择第一个:

str = 'name.extension'
p str[/(.*)[.]/,1] #=> name