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集” 这意味着只会显示第一组匹配项。或此,偶数:)您在我回答时发布。或此,偶数:)您在我回答时发布。