diff --git a/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs
index baca66d12..fa6626113 100644
--- a/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs
+++ b/src/NzbDrone.Core.Test/ParserTests/SingleEpisodeParserFixture.cs
@@ -82,6 +82,7 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("24.S01E01", "24", 1, 1)]
[TestCase("Homeland - 2x12 - The Choice [HDTV-1080p].mkv", "Homeland", 2, 12)]
[TestCase("Homeland - 2x4 - New Car Smell [HDTV-1080p].mkv", "Homeland", 2, 4)]
+ [TestCase("Top Gear - 06x11 - 2005.08.07", "Top Gear", 6, 11)]
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)
{
var result = Parser.Parser.ParseTitle(postTitle);
diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs
index 470ee4516..bd22aa501 100644
--- a/src/NzbDrone.Core/Parser/Parser.cs
+++ b/src/NzbDrone.Core/Parser/Parser.cs
@@ -17,10 +17,6 @@ namespace NzbDrone.Core.Parser
private static readonly Regex[] ReportTitleRegex = new[]
{
- //Episodes with airdate
- new Regex(@"^(?
.+?)?\W*(?\d{4})\W+(?[0-1][0-9])\W+(?[0-3][0-9])",
- RegexOptions.IgnoreCase | RegexOptions.Compiled),
-
//Anime - Absolute Episode Number + Title + Season+Episode
//Todo: This currently breaks series that start with numbers
// new Regex(@"^(?:(?\d{2,3})(?:_|-|\s|\.)+)+(?.+?)(?:\W|_)+(?:S?(?(?\d{2}(?!\d+)))+)",
@@ -51,11 +47,11 @@ namespace NzbDrone.Core.Parser
RegexOptions.IgnoreCase | RegexOptions.Compiled),
//Episodes with a title, Single episodes (S01E05, 1x05, etc) & Multi-episode (S01E05E06, S01E05-06, S01E05 E06, etc)
- new Regex(@"^(?.+?)(?:(\W|_)+S?(?(?\d{2,3}(?!\d+)))+)\W?(?!\\)",
+ new Regex(@"^(?.+?)(?:(\W|_)+S?(?(?\d{2,3}(?!\d+))(?:(?:\-|[ex]|\W[ex]|_){1,2}(?\d{2,3}(?!\d+)))*)\W?(?!\\)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
//Episodes with a title, Single episodes (S01E05, 1x05, etc) & Multi-episode (S01E05E06, S01E05-06, S01E05 E06, etc)
- new Regex(@"^(?.+?)(?:\W+S?(?(?\d{2,3}(?!\d+)))+)",
+ new Regex(@"^(?.+?)(?:\W+S?(?(?\d{2,3}(?!\d+))(?:(?:\-|[ex]|\W[ex]){1,2}(?\d{2,3}(?!\d+)))*)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
//Episodes with single digit episode number (S01E1, S01E5E6, etc)
@@ -82,6 +78,10 @@ namespace NzbDrone.Core.Parser
new Regex(@"^(?.+?)\W(?:S|Season)\W?(?\d{1,2}(?!\d+))(\W+|_|$)(?EXTRAS|SUBPACK)?(?!\\)",
RegexOptions.IgnoreCase | RegexOptions.Compiled),
+ //Episodes with airdate
+ new Regex(@"^(?.+?)?\W*(?\d{4})\W+(?[0-1][0-9])\W+(?[0-3][0-9])",
+ RegexOptions.IgnoreCase | RegexOptions.Compiled),
+
//Supports 1103/1113 naming
new Regex(@"^(?.+?)?(?:\W(?(?(?