Javascript 用于提取S'的正则表达式#';E'#';
我们有一组文件,它们的名称类似于,Javascript 用于提取S'的正则表达式#';E'#';,javascript,regex,Javascript,Regex,我们有一组文件,它们的名称类似于,'My.File.S01E01.something.something'或'My.File.S01E02.other.something'或'My_File.S1E1.something' 我试图做的是提取S01E01或S1E1之前的文本(例如,上面将返回My.File.或My_文件。并提取S和E的值,即S01(S=01)或S1(S=1)等 有人知道我怎么做吗?或者给我指出正确的方向,我真的不确定。试试: var file = 'My.File.S01E02.s
'My.File.S01E01.something.something'
或'My.File.S01E02.other.something'
或'My_File.S1E1.something'
我试图做的是提取S01E01
或S1E1
之前的文本(例如,上面将返回My.File.
或My_文件。
并提取S和E的值,即S01(S=01)
或S1(S=1)
等
有人知道我怎么做吗?或者给我指出正确的方向,我真的不确定。试试:
var file = 'My.File.S01E02.something.something';
var S = file.match(/(?:\.S)([0-9]+)(?:E[0-9]+\.)/)[1];
var E = file.match(/(?:\.S[0-9]+E)([0-9]+)(?:\.)/)[1];
下一步:
您可以匹配
S###
之前的所有文本,而不必担心特别匹配S###E#
。关键是检查确保S
之前没有数字或字母。例如,您可能希望忽略filenames02
此外,一些torrent在名称前面包含垃圾邮件。例如[torrent.com]My.File.S01E01.zip
,您也可以跳过它(如果您愿意)
只与文件名匹配的正则表达式是/^(\[.+\])?(.+[^a-z0-9])(?=S\d)/i
。如果要包含垃圾邮件,则只需/^(.+[^a-z0-9])(?=S\d)/i
var names = [
"My.File.S1E1.something",
"My File S01E01.something",
"[--spam--] My.File.S01E01.something",
"My.Files S01 something",
// these won't match
"My.FilesS01E01.something"
];
for(var i=0; i < names.length; i++)
{
var name = names[i];
name = name.match(/^(\[.+\])?(.+[^a-z0-9])(?=S\d)/i);
$('body').append('<div>'+name[2]+'</div>');
}
var名称=[
“My.File.S1E1.something”,
“我的文件S01E01.something”,
“[--垃圾邮件--]My.File.S01E01.something”,
“My.Files S01某物”,
//这些不相配
“我的.FilesS01E01.something”
];
对于(var i=0;i
这与其说是一个简单的正则表达式,不如说是一个算法。
var names = [
"My.File.S1E1.something",
"My File S01E01.something",
"[--spam--] My.File.S01E01.something",
"My.Files S01 something",
// these won't match
"My.FilesS01E01.something"
];
for(var i=0; i < names.length; i++)
{
var name = names[i];
name = name.match(/^(\[.+\])?(.+[^a-z0-9])(?=S\d)/i);
$('body').append('<div>'+name[2]+'</div>');
}
var file1 = 'My.File.S01E01.something.something';
var file2 = 'My.File.S01E02.another.something';
var file3 = 'My_File.S1E1.something';
var myFiles = [file1, file2, file3];
myFiles.forEach(function(e, i){
var myReturn = returnFileDefs(e);
console.log(myReturn);
});
function returnFileDefs(element){
var myResult = {};
var mySplit = element.split('\.');
var front = mySplit[0];
var re = /_/g;
if(re.test(front)){
myResult.front = front;
myResult.middle = mySplit[1];
}else{
myResult.front = mySplit[0]+'.'+mySplit[1];
myResult.middle = mySplit[2];
}
myResult.S = myResult.middle.match(/(S)([0-9]+)/)[2];
myResult.E = myResult.middle.match(/(E)([0-9]+)/)[2];
return myResult;
}