diff --git a/NzbDrone.Core.Test/ParserTest.cs b/NzbDrone.Core.Test/ParserTest.cs
index 76deb79bb..262429f03 100644
--- a/NzbDrone.Core.Test/ParserTest.cs
+++ b/NzbDrone.Core.Test/ParserTest.cs
@@ -36,6 +36,7 @@ namespace NzbDrone.Core.Test
//[Row(@"Season 4\07 WS PDTV XviD FUtV", "", 4, 7)]
[Row("The.Office.S03E115.DVDRip.XviD-OSiTV", "The.Office", 3, 115)]
[Row(@"Parks and Recreation - S02E21 - 94 Meetings - 720p TV.mkv", "Parks and Recreation", 2, 21)]
+ [Row(@"24-7 Penguins-Capitals- Road to the NHL Winter Classic - S01E03 - Episode 3.mkv", "24-7 Penguins-Capitals- Road to the NHL Winter Classic", 1, 3)]
public void episode_parse(string postTitle, string title, int season, int episode)
{
var result = Parser.ParseEpisodeInfo(postTitle);
diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs
index a9a57c77c..72ec4ab0c 100644
--- a/NzbDrone.Core/Parser.cs
+++ b/NzbDrone.Core/Parser.cs
@@ -16,6 +16,8 @@ namespace NzbDrone.Core
{
new Regex(@"^(?
.+?)?\W*(?\d{4})\W+(?\d{2})\W+(?\d{2})\W?(?!\\)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
+ new Regex(@"^(?.+?)(?:\WS?(?\d{1,2}(?!\d+))(?:(?:\-|\.|[ex]|\s|\sto\s){1,2}(?\d{1,2}(?!\d+)))+)+\W?(?!\\)",
+ RegexOptions.IgnoreCase | RegexOptions.Compiled),
new Regex(@"^(?.*?)?(?:\W?S?(?\d{1,2}(?!\d+))(?:(?:\-|\.|[ex]|\s|\sto\s){1,2}(?\d{1,2}(?!\d+)))+)+\W?(?!\\)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
new Regex(@"^(?.+?)?\W?(?:\W(?\d+)(?\d{2}))+\W?(?!\\)",
@@ -40,7 +42,7 @@ namespace NzbDrone.Core
foreach (var regex in ReportTitleRegex)
{
- var simpleTitle = Regex.Replace(title, @"480[i|p]|720[i|p]|1080[i|p]|[x|h]264", String.Empty, RegexOptions.IgnoreCase | RegexOptions.Compiled);
+ var simpleTitle = Regex.Replace(title, @"480[i|p]|720[i|p]|1080[i|p]|[x|h]264|\\|\/|\<|\>|\?|\*|\:|\|", String.Empty, RegexOptions.IgnoreCase | RegexOptions.Compiled);
//Use only the filename, not the entire path
var match = regex.Matches(new FileInfo(simpleTitle).Name);