0

这是我的文件:

name.extension

这是我的正则表达式:

.*[.]

但是,这与文件名和句点匹配:

#=> "filename."

我怎样才能排除期间以实现:

#=> "filename"

我正在使用红宝石。

4

4 回答 4

3

您可以使用File类方法File#basenameFile#extname

file= "ruby.rb"
File.basename(file,File.extname(file))
# => "ruby"
于 2013-09-28T06:02:25.207 回答
1

你只需要一个否定的字符类:

^[^.]*

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

于 2013-09-28T05:55:38.857 回答
0

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

str = 'name.extension'
p str[/(.*)[.]/,1] #=> name
于 2013-09-28T10:11:37.603 回答
0

匹配到最后一个“.”

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

匹配第一个“.”

 "filen.ame.extension"[/.*?(?=\.)/]
 # => filen
于 2013-09-28T06:23:53.007 回答