const regex = /(?<Fname>.*\.)(S(?<se>\d{1,2})E(?<ep>\d{2,3}).*|(?<season>S\d{1,2}-S\d{2,3}).*|(?<yr>\d{4}[^p]).*)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<Fname>.*\\.)(S(?<se>\\d{1,2})E(?<ep>\\d{2,3}).*|(?<season>S\\d{1,2}-S\\d{2,3}).*|(?<yr>\\d{4}[^p]).*)', 'g')
const str = `Westworld.S04E05.720p.WEB.h264-KOGi[rarbg]
Westworld.S04E04.1080p.WEB.H264-CAKES[rarbg]
For.All.Mankind.S03E08.720p.WEB.h264-KOGi[rarbg]
Talk.to.Me.2022.1080p.WEBRip.DD5.1.x264-LAMA
Jules.2023.1080p.AMZN.WEBRip.DD5.1.x264-LAMA
90.Day.Fiance.UK.S02E12.1080p.HEVC.x265-MeGusta
Inside.Job.S01-S02.WEBRip.1080p.AAC5.1.x265-SiQ
Til Death Do Us Part 2023 1080p AMZN WEBRip DD5 1 x264-LAMA
UFC.Fight.Night.227.Grasso.vs.Shevchenko.2.WEB-DL.H264.Fight-BB[TGx]
mIRC does not allow you to retrieve the full match. You can access simple captures but *you cannot access named capture* Well dam, now what?
***Work in progress***
\$replace(\$1-,\$chr(32),\$chr(46))
;mIRC Alias to test
alias test1 {
;TV
;var %s Westworld.S04E05.720p.WEB.h264-KOGi[rarbg]
;TV Series
;var %s Inside.Job.S01-S02.WEBRip.1080p.AAC5.1.x265-SiQ
;Movie
var %s A.Million.Miles.Away.2023.1080p.AMZN.WEBRip.DD5.1.x264-LAMA
noop \$regex(name, %s,/(?<Fname>.*\\.)(S(?<se>\\d{1,2})E(?<ep>\\d{2,3}).*|(?<season>S\\d{1,2}-S\\d{2,3}).*|(?<yr>\\d{4}[^p]).*)/g)
if (\$len(\$regml(name,3)) == 5) { Echo -a Movie: Fn: \$regml(name,1) Year: \$regml(name,3) | halt }
if (-s isin %s) { Echo -a Series: Fn: \$regml(name,1) S: \$regml(name,3) }
else echo -a TV: Fn: \$regml(name,1) S: \$regml(name,3) EP: \$regml(name,4)
}
;mIRC 7zip stuff
var %eDir \$getdir(.tar)
var %oDir \$getdir_Movies
/run -np "c:\\Program files\\7-Zip\\7z.exe" e -aos " \$+ %eDir \$+ %s \$+ " *.avi *.mkv *.mp4 -r -o \$+ " \$+ %oDir \$+ "`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions