Ruby 比赛前展示一切

Ruby 比赛前展示一切,ruby,Ruby,我有一个正则表达式可以在我的驱动器上查找电视剧文件 if (filename =~ /S\d+?E\d+?/ix) puts "EPISODE : #{filename}" 效果很好,可以打印文件名,例如 EPISODE : Lie.to.Me.S02E02.Truth.or.Consequences.HDTV.XviD-2HD.avi 如何在匹配之前显示所有内容,而不是显示整个文件名? 所以我想在S02E02上匹配,但是显示Lie.to.Me,但是这个Lie.to.Me字符串实际上可

我有一个正则表达式可以在我的驱动器上查找电视剧文件

if (filename =~ /S\d+?E\d+?/ix)
  puts "EPISODE : #{filename}" 
效果很好,可以打印文件名,例如

EPISODE : Lie.to.Me.S02E02.Truth.or.Consequences.HDTV.XviD-2HD.avi
如何在匹配之前显示所有内容,而不是显示整个文件名? 所以我想在S02E02上匹配,但是显示Lie.to.Me,但是这个Lie.to.Me字符串实际上可以是任何东西,所以我不能为特定的东西执行正则表达式。

在模式之前使用
#匹配
*
,并使用捕获组

s = "Lie.to.Me.S02E02.Truth.or.Consequences.HDTV.XviD-2HD.avi"
m = s.match(/S\d+?E\d+?/ix)
puts m.pre_match
=> "Lie.to.Me."
"Lie.To.Me-S02E01-Xvid.avi".match(/\A(.*?)S\d+E\d+?/ix)[1]
# => Lie.To.Me-
在模式前使用
#将
*匹配,并与捕获组匹配

"Lie.To.Me-S02E01-Xvid.avi".match(/\A(.*?)S\d+E\d+?/ix)[1]
# => Lie.To.Me-
使用预匹配:

match = /S\d+?E\d+?/ix.match(filename)
if match then
  puts match.pre_match
end
使用预匹配:

match = /S\d+?E\d+?/ix.match(filename)
if match then
  puts match.pre_match
end

尝试使用
$`
特殊变量:

def检查(文件名)
如果(文件名=~/S\d+?E\d+?/ix)
放置“匹配:#{filename}”
放置“PRE:#{$`}”
结束
结束
检查“插曲:对我撒谎。S02E02。真相。或后果。高清电视。XviD-2HD。avi”
#比赛:插曲:Lie.to.Me.S02E02.Truth.or.resultations.HDTV.XviD-2HD.avi
#前:插曲:对我撒谎。

尝试使用
$`
特殊变量:

def检查(文件名)
如果(文件名=~/S\d+?E\d+?/ix)
放置“匹配:#{filename}”
放置“PRE:#{$`}”
结束
结束
检查“插曲:对我撒谎。S02E02。真相。或后果。高清电视。XviD-2HD。avi”
#比赛:插曲:Lie.to.Me.S02E02.Truth.or.resultations.HDTV.XviD-2HD.avi
#前:插曲:对我撒谎。

您应该注意在正则表达式中使用括号,以便能够处理组: 如果(文件名=~/.+(S\d+?E\d+?).*/ix) 放入“第1集”
这意味着只会显示第一个匹配的组。

您应该注意在正则表达式中使用括号才能处理组: 如果(文件名=~/.+(S\d+?E\d+?).*/ix) 放入“第1集” 这意味着只会显示第一组匹配项。

或此,偶数:)您在我回答时发布。或此,偶数:)您在我回答时发布。