Jump to content

User:BattyBot/CS1 errors-dates

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by GoingBatty (talk | contribs) at 00:56, 22 April 2014 (added/expanded rules). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip)
 {
  Skip = false;
  Summary = "";
//-----
//Format:
//ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*) find (\s*[\|}<])", "{{$1$2$3 replace $4");
//This is designed to only fix {{cite foo}} or {{citation}} templates (or associated wrapper templates)
//Most rules will fix archivedate, accessdate, or date parameters - some rules are broken out so that it will fix the same issue in multiple parameters
//Most rules will check for full date followed by ending pipe or right curly brace
//Note that this module will not fix every error - the goal is to fix some properly and not break anything
//-----
//remove duplicate equals sign or leading nbsp;
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:(?:archive|access|publication-?)?date|year)\s*=)\s*(?:=|&nbsp;)", "{{$1$2$3");
//add pipe before parameter
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:(?:archive|access|publication-?)?date|year)\s*=\s*(?:\d{4})?\s*)(accessdate|deadurl|first|is[bs]n|language|page|publisher|ref|url)(\s*=)", "{{$1$2$3|$4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:(?:archive|access|publication-?)?date|year)\s*=\s*\d{4}-\d{2}-\d{2}\s*)(accessdate|archivedate|deadurl|first|is[bs]n|language|page|publisher|ref|url)(\s*=)", "{{$1$2$3|$4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\(?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)(\s*\d{1,2},)?\s*(\d{4}\s*)(accessdate|deadurl|first|is[bs]n|language|page|publisher|ref|url)(\s*=)", "{{$1$2$3$4$5 $6|$7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\(?(\s*\d{1,2}\s*)?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\s*(\d{4}\s*)(accessdate|deadurl|first|is[bs]n|language|page|publisher|ref)(\s*=)", "{{$1$2$3$4$5 $6|$7$8");
//fix NCES parameter
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*)accessdate", "{{$1$2$3access_date");
//remove updated
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(?:last\s*)?(?:revised|published|modified|updated?):?\s*(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4$5 $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(?:last\s*)?(?:revised|published|modified|updated?)(?:\son)?:?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4$5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})\s*\((?:last\s*)?updated?\)?\s*(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4})\s*\(?(?:last\s*)?(?:updated?|modified)\)?(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*)(?:last\s*)?(?:revised|updated?)\s*(\d{4})(-\d{2}-\d{2})?(\s*[\|}<])", "{{$1$2$3$4$5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*\d{4})(-\d{2}-\d{2})?\s*[\(\[]?(?:last\s*)?(?:revised|updated?)[\)\]]?(\s*[\|}<])", "{{$1$2$3$4$5");
//removed retrieved
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(?:date accessed|Retrieved)\s*(?:on\s*)?(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4$5 $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(?:date accessed|Retrieved)\s*(?:on\s*)?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4$5, $6");
//change date to accessdate
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)date(\s*=\s*)(?:acces+ed|retrieved):?\s*(?:on\s*)?(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3accessdate$4$5$6 $7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)date(\s*=\s*)(?:acces+ed|retrieved):?\s*(?:on\s*)?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3accessdate$4$5 $6, $7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)date(\s*=\s*)(?:acces+ed|retrieved):?\s*(?:on\s*)?(\d{4}-\d{2}-\d{2})\.?(\s*[\|}<])", "{{$1$2$3accessdate$4$5$6");
//remove Nowrap template
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Nn]o(?:wrap|break)\|([\w\s,]+)\.?}}", "{{$1$2$3$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Nn]o(?:wrap|break)\|([\w\s,]+)\.?}}", "{{$1$2$3$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Nn]o(?:wrap|break)\|([\w\s,]+)\.?}}", "{{$1$2$3$4");
//replace Start date template
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?1\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?1\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?1\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?2\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?2\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?2\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?3\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?3\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?3\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?4\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?4\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?4\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?5\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?5\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?5\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?6\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?6\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?6\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?7\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?7\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?7\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?8\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?8\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?8\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?9\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?9\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?9\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|10\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|10\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|10\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|11\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|11\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|11\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|12\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|12\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{[Ss]tart ?date\|(\d{4})\|12\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?1\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 January $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?2\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 February $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?3\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 March $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?4\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 April $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?5\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 May $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?6\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 June $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?7\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 July $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?8\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 August $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|0?9\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 September $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|10\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 October $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|11\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 November $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|(\d{4})\|12\|(\d{1,2})\|df=y(?:es)?}}(\s*[\|}<])", "{{$1$2$3$5 December $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?1\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 January $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?2\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 February $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?3\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 March $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?4\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 April $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?5\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 May $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?6\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 June $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?7\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 July $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?8\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 August $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|0?9\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 September $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|10\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 October $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|11\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 November $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*){{[Ss]tart ?date\|df=y(?:es)?\|(\d{4})\|12\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 December $4$6");
//replace formatdate template
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-01-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-01-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-01-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3January $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-02-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-02-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-02-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3February $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-03-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-03-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-03-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3March $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-04-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-04-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-04-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3April $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-05-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-05-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-05-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3May $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-06-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-06-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-06-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3June $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-07-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-07-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-07-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3July $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-08-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-08-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-08-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3August $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-09-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-09-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-09-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3September $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-10-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-10-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-10-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3October $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-11-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-11-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-11-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3November $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{#formatdate:(\d{4})-12-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{#formatdate:(\d{4})-12-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{#formatdate:(\d{4})-12-(\d{2})\|mdy}}(\s*[\|}<])", "{{$1$2$3December $5, $4$6");
//replace date template
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{date\|(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4})}}(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{date\|(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4})}}(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{date\|(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4})}}(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{date\|(\d{4}\.\d{2}\.\d{2})}}(\s*[\|}<])", "{{$1$2$3$4$5");
//replace dts template
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*){{dts(?:\|link=off)?\|(\d{4})\|(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 $6, $4$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{dts(?:\|link=off)?\|(\d{4})\|(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 $6, $4$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*){{dts(?:\|link=off)?\|(\d{4})\|(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\|(\d{1,2})}}(\s*[\|}<])", "{{$1$2$3$5 $6, $4$7");
//remove trailing period from month parameter
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.(\s*[\|}<])", "{{$1$2$3$4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)\s*\|\s*month\s*=\s*\.(\s*[\|}<])", "{{$1$2$3");
//convert month parameter from number to text
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)01(\s*[\|}<])", "{{$1$2$3January$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)02(\s*[\|}<])", "{{$1$2$3February$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?3(\s*[\|}<])", "{{$1$2$3March$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?4(\s*[\|}<])", "{{$1$2$3April$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?5(\s*[\|}<])", "{{$1$2$3May$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?6(\s*[\|}<])", "{{$1$2$3June$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?7(\s*[\|}<])", "{{$1$2$3July$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?8(\s*[\|}<])", "{{$1$2$3August$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)0?9(\s*[\|}<])", "{{$1$2$3September$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)10(\s*[\|}<])", "{{$1$2$3October$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)11(\s*[\|}<])", "{{$1$2$3November$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)12(\s*[\|}<])", "{{$1$2$3December$4");
//convert date month to date (when month also contains year)
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{1,2})\s*\|\s*(?:month|year)\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5$6");
//convert day/date month year parameters to date
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\s*\|\s*(?:month|year)\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*\|\s*(?:year|month)\s*=\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\s*\|\s*year\s*=\s*(\d{4})\s*\|\s*month\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?(\s*[\|}<])", "{{$1$2$3date$4 $6 $5$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)month\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*\|\s*da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\s*\|\s*year\s*=\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$5 $4 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)month\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*\|\s*year\s*=\s*(\d{4})\s*\|\s*da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\.?(\s*[\|}<])", "{{$1$2$3date$6 $4 $5$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year\s*=\s*(\d{4})\s*\|\s*da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\s*\|\s*month\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?(\s*[\|}<])", "{{$1$2$3date$5 $6 $4$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year\s*=\s*(\d{4})\s*\|\s*month\s*=\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*\|\s*da(?:te|y)(\s*=\s*\d{1,2}(?:-\d{1,2})?)(?:st|nd|rd|th)?\.?(\s*[\|}<])", "{{$1$2$3date$6 $5 $4$7");
//convert date year parameters to date (no day)
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter))\.?\s*\|\s*(?:month|year)\s*=\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year\s*=\s*(\d{4})\s*\|\s*(?:date|year)(\s*=\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter))\.?(\s*[\|}<])", "{{$1$2$3date$5 $4$6");
//convert date/month year parameters to date (with day before)
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month)(\s*=\s*\d{1,2})(?:(?:st|nd|rd|th)\s*of)?(?:&nbsp;|\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*\|\s*year\s*=\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year\s*=\s*(\d{4})\s*\|\s*(?:date|month)(\s*=\s*\d{1,2})(?:&nbsp;|\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?,?(\s*[\|}<])", "{{$1$2$3date$5 $6 $4$7");
//convert date/month year parameters to date (with day after)
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month)(\s*=\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))\.?\s*(\d{1,2}),?\s*\|\s*year\s*=\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year\s*=\s*(\d{4})\s*\|\s*(?:date|month)(\s*=\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?))\.?,?\s*(\d{1,2}),?(\s*[\|}<])", "{{$1$2$3date$5 $6, $4$7");
//convert fullwidth to regular digits
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0(\d)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)1(\d)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}1$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)2(\d)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}2$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)3(\d)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)4\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}4 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)5\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}5 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)6\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}6 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)7\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}7 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)8\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}8 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)9\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}9 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)0\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}0 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)1\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}1 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)2\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}2 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)3\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)4\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}4 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)5\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}5 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)6\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}6 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)7\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}7 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)8\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}8 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d)9\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4}\s*[\|}<])", "{{$1$2${3}9 $4 $5");
//remove extraneous parentheses and "issue"
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\(?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)(\s*\d{1,2},)?\s*(\d{4})(?: issue)?\)?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\((\d{1,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\s*(\d{4})\)?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\((\d{4}-\d{2}-\d{2})\)?(\s*[\|}<])", "{{$1$2$3$4$5");
//remove extraneous bracket
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)([\w\s-]+)\](\s*[\|}<])", "{{$1$2$3$4$5");
//unlink dates
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\[\[(\d{0,2}\s*(?:January|February|March|April|May|June|July|August|September|October|November|December)\s*\d{0,2}(?:–\d{1,2})?)\]\](,)?\s*(\d{4})(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{0,2}\s*(?:January|February|March|April|May|June|July|August|September|October|November|December)\s*\d{0,2})(,)?\s*\[\[(\d{4})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\[\[(\d{0,2}\s*(?:January|February|March|April|May|June|July|August|September|October|November|December)\s*\d{0,2})\]\](,)?\s*\[\[(\d{4})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)\[\[(\d{0,2}\s*(?:January|February|March|April|May|June|July|August|September|October|November|December)\s*\d{0,2})(,)?\s*(\d{4})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)\[\[(\d{4})[-–](\d{2})[-–](\d{2})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)\[\[(\d{4})[-–](\d{2})[-–](\d{2})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)\[\[(\d{4})[-–](\d{2})[-–](\d{2})\]\]\.?(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*)\[+(\d{4}(?:-\d{2}-\d{2})?)\]+\.?(\s*[\|}<])", "{{$1$2$3$4$5");
//remove "date" in date field
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)date\s*(\d{0,2}\s*(?:January|February|March|April|May|June|July|August|September|October|November|December)\s*\d{0,2})(,)?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4$5 $6$7");
//fix range of years
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*\d{4})\s*(?:&ndash;|-|–|-)\s*(\d{4}\s*[\|}<])", "{{$1$2$3–$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*\d{4})\s*(?:&ndash;|-|–|-)\s*(\d{4}\s*[\|}<])", "{{$1$2$3–$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*Winter),?\s*(\d{4})\s*(?:&ndash;|-|–|-|\/)\s*(\d{4})\)?(\s*[\|}<])", "{{$1$2$3 $4–$5$6");
//fix range of months with duplicate year
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?\s*(\d{4})[&nbsp;|\s]*(?:[-–—\/]|&ndash;)?[&nbsp;|\s]*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?,?\s*\5,?(\s*[\|}<])", "{{$1$2$3$4–$6 $5$7");
//fix range of months (same year)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?[&nbsp;|\s]*(?:[-–—\/]|&ndash;)?[&nbsp;|\s]*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?,?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3$4–$5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:month|year)(\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?[&nbsp;|\s]*(?:[-–—\/]|&ndash;)?[&nbsp;|\s]*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?,?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3date$4$5–$6 $7$8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month)(\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?[&nbsp;|\s]*(?:[-–—\/]|&ndash;)?[&nbsp;|\s]*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?,?(\s*[\|}<])", "{{$1$2$3month$4$5–$6 $7");
//fix range of months (different years)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?\s*(\d{4})[&nbsp;|\s]*(?:[-–—\/]|&ndash;)?[&nbsp;|\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\.?,?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3$4 $5 – $6 $7$8");
//fix range of days within a month
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{1,2})\s*(?:[-–—]|to|&ndash;)\s*(\d{1,2})\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?,?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3–$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*(\d{1,2})\s*(?:[-\/—–]|and|&ndash;)\s*(\d{1,2})\s*,?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5–$6, $7$8");
//fix range of dates within a year
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?)\.?\s*(\d{1,2})(?:&nbsp;|\s)*(?:[-–—\/]|&ndash;)?(?:&nbsp;|\s)*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*(\d{1,2}),?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3$4 $5 – $6 $7, $8$9");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*\d{1,2})\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?)\.?\s*(?:[-–—\/]|&ndash;)\s*(\d{1,2})\s*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?,?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3 $4 – $5 $6 $7$8");
//fix range of dates (different years - not supported by CS1)
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*Dec(?:ember)?)\.?\s*(\d{1,2}),?\s*(\d{4})(?:&nbsp;|\s)*(?:[-–—\/]|&ndash;)?(?:&nbsp;|\s)*(Jan(?:uary)?)\.?\s*(\d{1,2}),?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3 $4, $5 – $6 $7, $8$9");
//convert yyyy mmm-mmm to Mmm-mmm yyyy
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)(\d{4})[-–\s](Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Spring|Summer|Fall|Autumn|Winter)\s*(?:[-–—]|&ndash;)\s*(Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)(\s*[\|}<])", "{{$1$2$3$5–$6 $4$7");
//TEMPORARILY COMMENTED OUT convert yyyy-mm to Mmmm yyyy - different rules for archive/accessdate
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[1-9]|1\d))[-–]01(\s*[\|}<])", "{{$1$2$3January $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[2-9]|1\d))[-–]02(\s*[\|}<])", "{{$1$2$3February $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[3-9]|1\d))[-–]03(\s*[\|}<])", "{{$1$2$3March $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[4-9]|1\d))[-–]04(\s*[\|}<])", "{{$1$2$3April $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[5-9]|1\d))[-–]05(\s*[\|}<])", "{{$1$2$3May $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[6-9]|1\d))[-–]06(\s*[\|}<])", "{{$1$2$3June $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[7-9]|1\d))[-–]07(\s*[\|}<])", "{{$1$2$3July $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:0[89]|1\d))[-–]08(\s*[\|}<])", "{{$1$2$3August $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20(?:09|1\d))[-–]09(\s*[\|}<])", "{{$1$2$3September $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(201\d)[-–]10(\s*[\|}<])", "{{$1$2$3October $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(201[1-9])[-–]11(\s*[\|}<])", "{{$1$2$3November $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(201[2-9])[-–]12(\s*[\|}<])", "{{$1$2$3December $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[1-9]|[1-9]\d))[-–]01(\s*[\|}<])", "{{$1$2$3January $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[2-9]|[1-9]\d))[-–]02(\s*[\|}<])", "{{$1$2$3February $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[3-9]|[1-9]\d))[-–]03(\s*[\|}<])", "{{$1$2$3March $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[4-9]|[1-9]\d))[-–]04(\s*[\|}<])", "{{$1$2$3April $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[5-9]|[1-9]\d))[-–]05(\s*[\|}<])", "{{$1$2$3May $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[6-9]|[1-9]\d))[-–]06(\s*[\|}<])", "{{$1$2$3June $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[7-9]|[1-9]\d))[-–]07(\s*[\|}<])", "{{$1$2$3July $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:0[89]|[1-9]\d))[-–]08(\s*[\|}<])", "{{$1$2$3August $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:09|[1-9]\d))[-–]09(\s*[\|}<])", "{{$1$2$3September $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:1\d|[2-9]\d))[-–]10(\s*[\|}<])", "{{$1$2$3October $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:1[1-9]|[2-9]\d))[-–]11(\s*[\|}<])", "{{$1$2$3November $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d(?:1[2-9]|[2-9]\d))[-–]12(\s*[\|}<])", "{{$1$2$3December $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[1-9]|[1-9]\d))[-–]01(\s*[\|}<])", "{{$1$2$3January $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[2-9]|[1-9]\d))[-–]02(\s*[\|}<])", "{{$1$2$3February $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[3-9]|[1-9]\d))[-–]03(\s*[\|}<])", "{{$1$2$3March $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[4-9]|[1-9]\d))[-–]04(\s*[\|}<])", "{{$1$2$3April $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[5-9]|[1-9]\d))[-–]05(\s*[\|}<])", "{{$1$2$3May $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[6-9]|[1-9]\d))[-–]06(\s*[\|}<])", "{{$1$2$3June $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[7-9]|[1-9]\d))[-–]07(\s*[\|}<])", "{{$1$2$3July $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:0[89]|[1-9]\d))[-–]08(\s*[\|}<])", "{{$1$2$3August $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:09|[1-9]\d))[-–]09(\s*[\|}<])", "{{$1$2$3September $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:1\d|[2-9]\d))[-–]10(\s*[\|}<])", "{{$1$2$3October $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:1[1-9]|[2-9]\d))[-–]11(\s*[\|}<])", "{{$1$2$3November $4$5");
//ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)([12]\d(?:1[2-9]|[2-9]\d))[-–]12(\s*[\|}<])", "{{$1$2$3December $4$5");
//convert yyyy-m to Mmmm yyyy - different rules for archive/accessdate
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20[01][3-9])[-–]3(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(20[01][4-9])[-–]4(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(200[5-9])[-–]5(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(200[6-9])[-–]6(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(200[7-9])[-–]7(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(200[89])[-–]8(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)date\s*=\s*)(2009)[-–]9(\s*[\|}<])", "{{$1$2$3September $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[3-9])[-–]3(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[4-9])[-–]4(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[5-9])[-–]5(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[6-9])[-–]6(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[7-9])[-–]7(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}[89])[-–]8(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:publication-?)?date\s*=\s*)([12]\d{2}9)[-–]9(\s*[\|}<])", "{{$1$2$3September $4$5");
//convert mm-yyyy
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?1[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3January $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?2[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3February $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?3[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3March $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?4[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3April $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?5[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3May $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?6[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3June $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?7[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3July $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?8[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3August $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)0?9[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3September $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)10[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3October $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)11[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3November $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)12[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3December $4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?1[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4January $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?2[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4February $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?3[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4March $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?4[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4April $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?5[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4May $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?6[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4June $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?7[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4July $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?8[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4August $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)0?9[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4September $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)10[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4October $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)11[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4November $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)12[-–\/](\d{4}\s*[\|}<])", "{{$1$2$3date$4December $5");
//convert yyyy mmm to mmm yyyy
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{4}),?(?:&nbsp;|[\s*-\/])(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)(\s*[\|}<])", "{{$1$2$3$5 $4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)(\d{4}),?(?:&nbsp;|\s*|-)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)(\s*[\|}<])", "{{$1$2$3date$4$6 $5$7");
//convert yyyy mmm dd to mmm dd yyyy
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{4}),?(?:&nbsp;|\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2})(\s*[\|}<])", "{{$1$2$3$5 $6, $4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)(\d{4}),?(?:&nbsp;|\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2})(\s*[\|}<])", "{{$1$2$3date$4$6 $7, $5$8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*access_date\s*=\s*)(\d{4}),?(?:&nbsp;|\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2})(\s*[\|}<])", "{{$1$2$3$5 $6, $4$7");
//convert period to comma
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{1,2})\.\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//comment out time
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Cit(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4})\s*(\(?(?:,|@|at|-)?\s*\d{1,2}[:\.]\d{2}(?:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4 <!-- $5 --> $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Cit(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*){{(\s*Cit(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4})\s*(\(?(?:,|@|at|-|;|\/)?\s*\d{1,2}[:\.]\d{2}(?::\d{2})?(?:[\s|&nbsp;]?[AaPp]\.?[Mm]\.?)?\(?(?:\s*\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4 <!-- $5 --> $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Cit(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4}),?\s*(\(?(?:,|@|at|-|;|\/)?\s*\d{1,2}[:\.]\d{2}(?::\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\(?(?:\s*\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4 <!-- $5 --> $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{4})\s*(\d{1,2}:\d{2}(?::\d{2})?)(\s*[\|}<])", "{{$1$2$3$4 <!-- $5 --> $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(?:Updated:?\s*)?(\d{4})[-–=\s:‐\.‑\/年](\d{2})[-–=\s:‐\.‑\/月](\d{2})日?\s*(\(?(?:,|at|-|T)?\s*\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;|Z)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(?:Updated:?\s*)?(\d{4})[-–=\s:‐\.‑\/年](\d{2})[-–=\s:‐\.‑\/月](\d{2})日?\s*(\(?(?:,|at|-)?\s*\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-?date\s*=\s*)(?:Updated:?\s*)?(\d{4})[-–=\s:‐\.‑\/年](\d{2})[-–=\s:‐\.‑\/月](\d{2})日?\s*(\(?(?:,|at|-)?\s*\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(?:Updated:?\s*)?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{4})[-–=\s:‐\.‑\/年](\d{2})[-–=\s:‐\.‑\/月](\d{2})日?\s*(\(?(?:,|at|-)?(?:\s\d:|\s*\d{2}):\d{2}(?:\:\d{2})?(?: |&nbsp;)?(?:[AaPp]\.?[Mm]\.?)? *\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])[-\/\.=\s](\d{4})(\(?(?:,|at|-)?(?:\s\d:|\s*\d{2}):\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$6-$5-$4 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])[-\/\.=\s](\d{4})(\(?(?:,|at|-)?(?:\s\d:|\s*\d{2}):\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$6-$5-$4 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])[-\/\.=\s](\d{4})(\(?(?:,|at|-)?(?:\s\d:|\s*\d{2}):\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{2,3})?\)?)(\s*[\|}<])", "{{$1$2$3$6-$5-$4 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{3})?\)?),?\s*(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4}\s*[\|}<])", "{{$1$2$3<!-- $4 --> $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{3})?\)?),?\s*(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4}\s*[\|}<])", "{{$1$2$3<!-- $4 --> $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(\d{1,2}:\d{2}(?:\:\d{2})?(?:\s|&nbsp;)?(?:[AaPp]\.?[Mm]\.?)?\s*\(?(?:\w{3})?\)?),?\s*(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4}\s*[\|}<])", "{{$1$2$3<!-- $4 --> $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(2[01][01]\d)([01]\d)([0-3]\d)([0-2]\d[0-5]\d[0-5]\d)(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(\d{4})[-–=\s:‐\.‑\/年](\d{2})[-–=\s:‐\.‑\/月](\d{2})(T\d{2}:\d{2}:\d{2}\.\d{3,6}-\d{2}:\d{2})(\s*[\|}<])", "{{$1$2$3$4-$5-$6 <!-- $7 --> $8");
//fixed commented out time
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Cit(?:e|ation))([^}]+)(\s*\|\s*(?:access)?date\s*=\s*)(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?,?\s*(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4}\s*)<!- – (.*?)-->(\s*[\|}<])", "{{$1$2$3$4<!-- $5-->$6");
//comment out time zone
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*)(\d{0,2}\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\.?\s*\d{0,2},?\s*\d{4})\s*(\([EIJP]ST\)?)(\s*[\|}<])", "{{$1$2$3$4 <!-- $5 --> $6");
//remove "st", "nd", "rd", "th"
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})(?:<sup>|\s*)?(?:st|nd|rd|th)(?:<\/sup>)?(?:,|\s*of)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{1,2})(?:<sup>|\s*)?(?:st|nd|rd|th)(?:<\/sup>)?(?:,|\s*of)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-?date\s*=\s*\d{1,2})(?:<sup>|\s*)?(?:st|nd|rd|th)(?:<\/sup>)?(?:,|\s*of)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*\d{1,2})(?:<sup>|\s*)?(?:st|nd|rd|th)(?:<\/sup>)?(?:,|\s*of)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{4}\s*[\|}<])", "{{$1$2$3date$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{1,2})\s*(?:st|nd|rd|th),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{1,2})\s*(?:st|nd|rd|th),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{1,2})\s*(?:st|nd|rd|th),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{1,2})\s*(?:st|nd|rd|th),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*(?:ITIS|IUCN))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{1,2})\s*(?:st|nd|rd|th),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*(?:ITIS|IUCN))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{1,2})\s*(?:st|nd|rd|th)(?:,|\s*of)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
//convert foreign languages/typos to English - dd mmm yyyy and mmm dd yyyy
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:janeiro|enero)(?: del?)?|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3January $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:fevereiro|febrero?)(?: del?)?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3February $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?m[äa]r[çstz][os]?(?: del?)?|ma[rt]*c[adhj]?|martie|марта?|Март|marzec|Mawrth|březen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?abril(?: del?)?|a[opv][rt]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?ma[ijy][ago]?(?: del?)?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jun[hi]o?(?: del?)?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jul[hiy]o?l?(?: del?)?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?agosto?(?: del?)?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августа?|ağustos|Awst|sierpie[nń]|srpen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r)(?: del?)?|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3September $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?(?:octubre|outubro)(?: del?)?|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3October $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?: de)?novi?embr[eo](?: del?)?|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3November $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:de[csz]embr[eo]|d[éi]ci?embre)(?: del?)?|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|prosinec|Rhagfyr)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3December $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Jan\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jan $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Feb\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Feb $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Mar\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Mar $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Apr\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Apr $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Jun\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jun $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Jul\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jul $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Aug\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Aug $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Sept?\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Sep $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)O[ck]x?t\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Oct $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)Nov\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Nov $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}[\.,]?\s*)(?:De[cdsz]|Dic)\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Dec $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:janeiro|enero)(?: del?)?|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3January $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:fevereiro|febrero?)(?: del?)?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3February $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?m[äa]r[çstz][os]?(?: del?)?|ma[rt]*c[adhj]?|martie|марта?|Март|marzec|Mawrth|březen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?abril(?: del?)?|a[opv][rt]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?ma[ijy][ago]?(?: del?)?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jun[hi]o?(?: del?)?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jul[hiy]o?l?(?: del?)?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?agosto?(?: del?)?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августа?|ağustos|Awst|sierpie[nń]|srpen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r)(?: del?)?|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3September $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?(?:octubre|outubro)(?: del?)?|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3October $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?novi?embr[eo](?: del?)?|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3November $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:de[csz]embr[eo]|d[éi]ci?embre)(?: del?)?|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|prosinec|Rhagfyr)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода)?)?\.?(\s*[\|}<])", "{{$1$2$3December $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Jan\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jan $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Feb\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Feb $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Mar\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Mar $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Apr\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Apr $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Jun\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jun $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Jul\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jul $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Aug\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Aug $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Sept?\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Sep $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)O[ck]x?t\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Oct $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)Nov\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Nov $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,-]?\s*)(?:De[cdsz]|Dic)\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Dec $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:janeiro|enero)(?: del?)?|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4January $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:fevereiro|febrero?)(?: del?)?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4February $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?m[äa]r[çstz][os]?(?: del?)?|ma[rt]*c[adhj]?|martie|марта?|Март|апреля|marzec|Mawrth|březen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4March $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?abril(?: del?)?|a[opv][rt]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4April $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?ma[ijy][ago]?(?: del?)?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4May $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jun[hi]o?(?: del?)?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4June $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jul[hiy]o?l?(?: del?)?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4July $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?agosto?(?: del?)?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августа?|ağustos|Awst|sierpie[nń]|srpen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4August $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r)(?: del?)?|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4September $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?(?:octubre|outubro)(?: del?)?|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4October $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?novi?embr[eo](?: del?)?|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4November $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|month|year)(\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:de[csz]embr[eo]|d[éi]ci?embre)(?: del?)?|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|prosinec|Rhagfyr)\s*(\d{0,2}(?:st|nd|rd|th)?,?\.?\s*\d{4})(?:\s*г(?:ода))?\.?(\s*[\|}<])", "{{$1$2$3date$4December $5$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Jan\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jan $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Feb\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Feb $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Mar\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Mar $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Apr\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Apr $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Jun\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jun $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Jul\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Jul $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Aug\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Aug $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Sept?\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Sep $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)O[ck]x?t\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Oct $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)Nov\.?\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Nov $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}[\.,-]?\s*)(?:De[cdsz]|Dic)\s*(\d{0,2}[\.,-]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Dec $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)spring\s*(\d{4}\s*[\|}<])", "{{$1$2$3Spring $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)summer\s*(\d{4}\s*[\|}<])", "{{$1$2$3Summer $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)autumn\s*(\d{4}\s*[\|}<])", "{{$1$2$3Autumn $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)fall\s*(\d{4}\s*[\|}<])", "{{$1$2$3Fall $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)winter\s*(\d{4}\s*[\|}<])", "{{$1$2$3Winter $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:janeiro|enero|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))(\s*[\|}<])", "{{$1$2$3January$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:fevereiro|febrero?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)(\s*[\|}<])", "{{$1$2$3February$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:m[äa]r[çstz][os]?|ma[rt]*c[adhj]?|martie|марта?|Март|marzec|Mawrth|březen)(\s*[\|}<])", "{{$1$2$3March$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:a[bopv][tr]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)(\s*[\|}<])", "{{$1$2$3April$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:ma[ijy][ago]?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)(\s*[\|}<])", "{{$1$2$3May$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:jun[hi]o?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)(\s*[\|}<])", "{{$1$2$3June$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:jul[hiy]o?l?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)(\s*[\|}<])", "{{$1$2$3July$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:agosto?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августа?|ağustos|Awst|sierpie[nń]|srpen)(\s*[\|}<])", "{{$1$2$3August$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)(\s*[\|}<])", "{{$1$2$3September$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:octubre|outubro|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)(\s*[\|}<])", "{{$1$2$3October$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:novi?embr[eo]|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)(\s*[\|}<])", "{{$1$2$3November$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:de[csz]embr[eo]|d[éi]ci?embre|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|Rhagfyr)(\s*[\|}<])", "{{$1$2$3December$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Jan[\.,]?(\s*[\|}<])", "{{$1$2$3Jan$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Feb[\.,]?(\s*[\|}<])", "{{$1$2$3Feb$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Mar[\.,]?(\s*[\|}<])", "{{$1$2$3Mar$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Apr[\.,]?(\s*[\|}<])", "{{$1$2$3Apr$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Jun[\.,]?(\s*[\|}<])", "{{$1$2$3Jun$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Jul[\.,]?(\s*[\|}<])", "{{$1$2$3Jul$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Aug[\.,]?(\s*[\|}<])", "{{$1$2$3Aug$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Sept?[\.,]?(\s*[\|}<])", "{{$1$2$3Sep$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)O[ck]x?t[\.,]?(\s*[\|}<])", "{{$1$2$3Oct$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)Nov[\.,]?(\s*[\|}<])", "{{$1$2$3Nov$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*month\s*=\s*)(?:De[cdsz]|Dic)[\.,]?(\s*[\|}<])", "{{$1$2$3Dec$4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)January?(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 January $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)February?(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 February $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)März(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 March $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)April(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 April $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Ma[iy](?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 May $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Juni(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 June $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Juli(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 July $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)August(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 August $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Septemb[er]+(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 September $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Oktober(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 October $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)November(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 November $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)De[cz]ember(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 December $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)January?(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 January $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)February?(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 February $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)März(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 March $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)April(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 April $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Ma[iy](?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 May $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Juni(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 June $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Juli(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 July $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)August(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 August $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Septemb[er]+(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 September $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)Oktober(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 October $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)November(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 November $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*Internetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{0,2})[\.,]?(?:&nbsp;|\s*)De[cz]ember(?:&nbsp;|\s*)(\d{4}\s*[\|}<])", "{{$1$2$3 December $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:janeiro|enero)(?: del?)?|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3January $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:fevereiro|febrero?)(?: del?)?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3February $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?m[äa]r[çstz][os]?(?: del?)?|ma[rt]*c[adhj]?|martie|марта?|Март|marzec|Mawrth|březen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?abril(?: del?)?|a[opv][rt]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?ma[ijy][ago]?(?: del?)?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jun[hi]o?(?: del?)?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jul[hiy]o?l?(?: del?)?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?agosto?(?: del?)?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августa?|ağustos|Awst|sierpie[nń]|srpen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r)(?: del?)?|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3September $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?(?:octubre|outubro)(?: del?)?|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3October $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?: de)?novi?embr[eo](?: del?)?|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3November $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:de[csz]embr[eo]|d[éi]ci?embre)(?: del?)?|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|prosinec|Rhagfyr)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3December $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)Sept?\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Sep $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)O[ck]x?t\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Oct $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*ITIS)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}[\.,]?\s*)(?:De[cdsz]|Dic)\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Dec $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:janeiro|enero)(?: del?)?|gener|gennaio|ianuarie|Ionawr|j[au]+[mn][uar]+[tyz]?|јануар|janvier|leden|января|Януари|ocak|stycz(?:eń|nia))\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3January $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:fevereiro|febrero?)(?: del?)?|febbraio|fr?[ae][bn]r?[uy]?[rs]?[aeu]+[rt]?[ituy]?e?|février|Chwefror|февраля|Февруари|фебруар|şubat|luty|únor)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3February $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?m[äa]r[çstz][os]?(?: del?)?|ma[rt]*c[adhj]?|martie|марта?|Март|marzec|Mawrth|březen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3March $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?abril(?: del?)?|a[opv][rt]i[l;]?i?e?|aprl|апреля|Април|duben|Ebrill|nisan|kwiecien|pril)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3April $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?ma[ijy][ago]?(?: del?)?|maggio|m[as][ir]?y|mei|ма[jя]|Май|mayıs|mya|květen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3May $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jun[hi]o?(?: del?)?|giugno|iunie|j?i?u[bn]+[dei]|ju[ei]n|јун|июня|Юни|haziran|červen|czerwiec|Mehefin)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3June $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?jul[hiy]o?l?(?: del?)?|iulie|j?ulk?[ity]|juillet|červenec|Gorffennaf|јул|luglio|июля|Юли|temmuz|lipiec)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3July $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?agosto?(?: del?)?|ao[ûu]t|as?[uv]?[ins]?[dg][iu]+e?[as]t[es]?|августа?|ağustos|Awst|sierpie[nń]|srpen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3August $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:septiembre|sep?tembr[eo]|st?em?p[bt]er?m[bh][ae]r)(?: del?)?|septembrie|settemb[re]+|Сентября|Септември|септембар|eylül|Medi|wrzesien|září)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3September $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:d[e']\s*)?(?:octubre|outubro)(?: del?)?|[Óo][ckv]o?[rt]o?[cer]?[bv][ae]r|octombrie|o[ct]tobre|октября|октобар|Октомври|ekim|Hydref|pazdziernik|říjen)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3October $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?: de)?novi?embr[eo](?: del?)?|noiembrie|[nv]o[iv]*m?er?[mn]e?b[ae]r?|Ноября|Ноември|новембар|kasım|listopad|Tachwedd)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3November $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:(?:de )?(?:de[csz]embr[eo]|d[éi]ci?embre)(?: del?)?|d?e[csz]m?e?w?mn?b+[ae]r?|d[ec]+mber|decembrie|Decembwe|Disember|grudnia|декабря|Декември|децембар|aralık|grudzien|prosinec|Rhagfyr)\s*(\d{0,2}(?:st|nd|rd|th)?,?\s*\d{4})(?:\s*г(?:ода|\.?))?(\s*[\|}<])", "{{$1$2$3December $4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)Sept?\.?\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Sep $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)O[ck]x?t\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Oct $4");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{0,2}[\.,]?\s*)(?:De[cdsz]|Dic)\s*(\d{0,2}[\.,]?\s*\d{4}\s*[\|}<])", "{{$1$2$3Dec $4");
//remove extraneous commas/periods after month
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{1,2})\.?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*(?:accessdate|downloaded)\s*=\s*\d{1,2})\.?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*access_date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)[,\.\s]+(?:of\s*)?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
//remove day of week
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(?:on\s)?\(?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)(?:day)?[\.,\s]*(\d{1,2})(?:st|nd|rd|th)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\.?\s*(\d{4})\)?,?(\s*[\|}<])", "{{$1$2$3$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*)(?:on\s)?\(?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)(?:day)?[\.,\s]*(\d{1,2})(?:st|nd|rd|th)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\.?\s*(\d{4})\)?,?(\s*[\|}<])", "{{$1$2$3date$4$5 $6 $7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(?:on\s)?\(?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)(?:day)?[\.,\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\.?\s*(\d{1,2})(?:st|nd|rd|th)?,?\s*(\d{4})\)?,?(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\.?\s*(\d{1,2})(?:st|nd|rd|th)?,?\s*(\d{4}),?\s*\(?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)(?:day)?[\)\.,\s]*(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{1,2})(?:st|nd|rd|th)?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\.?\s*(\d{4}),?\s*\(?(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)(?:day)?[\)\.,]*(\s*[\|}<])", "{{$1$2$3$4 $5 $6$7");
//remove &nbsp; and " " (no, that's not a normal space)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})\s*(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*) ?(\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?\s*(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*) ?(\d{1,2})\s*(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*) ?(\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*) (\d{1,2})\s*(January|February|March|April|May|June|July|August|September|October|November|December),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| )(\d{1,2}),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*)(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December)(?:&nbsp;| |\s*)(\d{1,2}),?(?:&nbsp;| |\s*)(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*\d{1,2})\s*(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?(?:&nbsp;| )(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NHLE)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{1,2})(?:&nbsp;| )(January|February|March|April|May|June|July|August|September|October|November|December),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
//change invalid separators to hyphens in yyyy-mm-dd
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=)[-\/]?(\s*\d{4})[-–−_=\s:‐\.‑\/年]+(\d{1,2})[-–−_=\s:‐\.‑\/月]+(\d{1,2})[日\.,> ]?(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=)[-\/]?(\s*\d{4})[-–−_=\s:‐\.‑\/年]+(\d{1,2})[-–−_=\s:‐\.‑\/月]+(\d{1,2})[日\.,> ]?(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*\d{4})[-–−_=\s:‐\.‑\/年]+(\d{1,2})[-–−_=\s:‐\.‑\/月]+(\d{1,2})[日\.,> ]?(\s*[\|}<])", "{{$1$2$3date$4-$5-$6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]ite gnis\s*\|\s*\d+\s*\|\s*[\w\s]+\s*\|\s*\d{4})[-–−_=\s:‐\.‑\/]+(\d{1,2})[-–−_=\s:‐\.‑\/]+(\d{1,2})[\.,> ]?(\s*[\|}<])", "{{$1-$2-$3$4");
//remove extra zero from MM and/or DD (only when there are two zeroes)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+(\d{2}\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})[-–=\s]+(\d{2})[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+(\d{2}\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-–=\s]+(\d{2})[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+(\d{2}\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})[-–=\s]+(\d{2})[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})[-–=\s]+0(0\d)[-–=\s]+0(0\d\s*[\|}<])", "{{$1$2$3-$4-$5");
//change year to date
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Fall|Autumn|Winter)),?\s*(\d{4}),?(\s*[\|}<])", "{{$1$2$3date$4 $5$6");
//convert yyyy-dd-mm to yyyy-mm-dd
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])(\s*[\|}<])", "{{$1$2$3-$5-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])(\s*[\|}<])", "{{$1$2$3-$5-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-?date\s*=\s*\d{4})[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])(\s*[\|}<])", "{{$1$2$3-$5-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])(\s*[\|}<])", "{{$1$2$3-$5-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*GRIN)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s](0?\d|1[0-2])(\s*[\|}<])", "{{$1$2$3-$5-$4$6");
//convert dd-mm-yyyy to yyyy-mm-dd
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$6-$5-$4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$6-$5-$4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publication-?date\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$6-$5-$4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})\.?(\s*[\|}<])", "{{$1$2$3date$4$7-$6-$5$8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})(\s*[\|}<])", "{{$1$2$3$6-$5-$4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+''([01]\d)''(\s*[\|}<])", "{{$1$2${3}20$6-$5-$4$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*)(1[3-9]|2\d|3[01])[-–\/\.=\s]+(0?\d|1[0-2])[-–\/\.=\s]+(\d{4})(\s*[\|}<])", "{{$1$2$3$6-$5-$4$7");
//convert mm-dd-yyyy to yyyy-mm-dd
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(0?\d|1[0-2])[-–\/\.=\s](1[3-9]|2\d|3[01])[-–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$6-$4-$5$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(0?\d|1[0-2])[-–\/\.=\s](1[3-9]|2\d|3[01])[-–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$6-$4-$5$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(?:Mon|Tues?|Wed(?:nes)?|Thu(?:rs)?|Fri|Sat(?:ur)?|Sun)?(?:day)?[\.,\s]*(0?\d|1[0-2])[-–\/\.=\s](1[3-9]|2\d|3[01])[-–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3date$4$7-$5-$6$8");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*)(0?\d|1[0-2])[-–\/\.=\s](1[3-9]|2\d|3[01])[-–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$6-$4-$5$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*access_date\s*=\s*)(0?\d|1[0-2])[-–\/\.=\s](1[3-9]|2\d|3[01])[-–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$6-$4-$5$7");
//convert mm/dd/yy to yyyy-mm-dd (when yy is in the 1940-90s)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(0?\d|1[0-2])[-\/\.=\s](1[3-9]|2\d|3[01])[-\/\.=\s]([4-9]\d)(\s*[\|}<])", "{{$1$2$3date${4}19$7-$5-$6$8");
//convert xx-xx-yyyy to yyyy-xx-xx
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(0?\d|1[0-2])[--–\/\.=\s]\4[--–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$5-$4-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(0?\d|1[0-2])[--–\/\.=\s]\4[--–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3$5-$4-$4$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(0?\d|1[0-2])[--–\/\.=\s]\5[--–\/\.=\s](\d{4})(\s*[\|}<])", "{{$1$2$3date$4$6-$5-$5$7");
//add missing zero to month portion of yyyy-mm-dd only when month portion is 3-9
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})-([3-9]-\d{2}\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})-([3-9]-\d{2}\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})-([3-9]-\d{2}\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]ite gnis\s*\|\s*\d+\s*\|\s*[\w\s,]+\s*\|\s*\d{4})[-\/\.=\s]([3-9])[-\/\.=\s](\d{2}\s*[\|}<])", "{{$1-0$2-$3");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{4})-([3-9]-\d{2}\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*\d{4})-([3-9]-\d{2}\s*[\|}<])", "{{$1$2$3-0$4");
//add missing zero to day portion of yyyy-mm-dd only when day portion is 4-9
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*datum\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4}-\d{2})-([4-9]\s*[\|}<])", "{{$1$2$3-0$4");
//add missing zero to month & day portions of yyyy-mm-dd only when month portion is 3-9 & day portion is 4-9
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{4})[-\/\.=\s]([3-9])[-\/\.=\s]([4-9]\s*[\|}<])", "{{$1$2$3-0$4-0$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{4})[-\/\.=\s]([3-9])[-\/\.=\s]([4-9]\s*[\|}<])", "{{$1$2$3-0$4-0$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{4})[-\/\.=\s]([3-9])[-\/\.=\s]([4-9]\s*[\|}<])", "{{$1$2$3-0$4-0$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]ite gnis\s*\|\s*\d+\s*\|\s*[\w\s,]+\s*\|\s*\d{4})[-\/\.=\s]([3-9])[-\/\.=\s]([4-9]\s*[\|}<])", "{{$1-0$2-0$3");
//remove prefix from accessdate
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)on\s*:?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(?:the\s*)?(\d{1,2})(?:st|nd|rd|th)?,?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)on\s*:?\s*(\d{1,2})\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*)on\s*:?\s*(\d{1,2})\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*)on\s*:?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//remove by XXXX from archivedate
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{1,2},)\s*(\d{4}),?\s*by\s*''\[\[\w+\]\]''(\s*[\|}<])", "{{$1$2$3$4 $5 $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})\s*(January|February|March|April|May|June|July|August|September|October|November|December)\s*(\d{4})\s*(?:\(Archived )?by\s*\w+\)?(\s*[\|}<])", "{{$1$2$3 $4 $5$6");
//remove period from abbreviated month (with day before)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{1,2})\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
//remove period from abbreviated month (with day after)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\.\s*(\d{1,2}),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//remove period/hyphen from abbreviated month (no day)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?:\.\s*|-)(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?:\.\s*|-)(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?:\.\s*|-)(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5");
//add missing comma
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*['`]?(\d{1,2})\.?\s*(?:of |['`])?(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*access_date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*['`]?(\d{1,2})\s*(?:of |['`])?(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//add missing space after comma
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*['`]?(\d{1,2}),(\d{4})\.?(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
//remove trailing punctuation
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*\d{1,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.]?\s*(\d{4})(?:[,\.<\)='\/]|&nbsp;)+(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.]?\s*(\d{1,2}),?\s*(\d{4})(?:[,\.<\)='\/]|&nbsp;)+(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Autumn|Fall|Winter)[,\.]?\s*(\d{4})(?:[,\.<\)='\/]|&nbsp;)+(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*(?:accessdate|downloaded)\s*=\s*\d{1,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[,\.]?\s*(\d{4})(?:[,\.<\)=\/]|&nbsp;)(\s*[\|}<])", "{{$1$2$3$4 $5$6");
//remove excess punctuation
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*)[\(]?(\d{4})(?:\s*[,\.\):;']| год|&nbsp;)?(\s*[\|}<])", "{{$1$2$3$4$5");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)[\(]?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Autumn|Fall|Winter)[,\.]?\s*(\d{4})(?:\s*[,\.\):;']| год|&nbsp;)?(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*year\s*=\s*)[\(]?(\d{4})(?:\s*[,\.\):;']|&nbsp;)?(\s*[\|}<])", "{{$1$2$3$4$5");
//remove invalid values (archiveurl requires archivedate)
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(?:\s*\|\s*(?:(?:access)?date|year)\s*=\s*[Uu]nknown\s*)([\|}<])", "{{$1$2$3");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)\|date=NaN undefined NaN([\|}<])", "{{$1$2$3");
//remove copyright symbol
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*)©\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4");
//remove duplicate comma
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),,\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//remove punctuation from dd mmm yyyy
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{1,2})[-–\.,\/=\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-–\.,\/=\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{1,2})[-–\.,\/=\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-–\.,\/=\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry)?date\s*=\s*\d{1,2})[-–\.,\/=\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-–\.,\/=\s]*(\d{4}\s*[\|}<])", "{{$1$2$3 $4 $5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)year(\s*=\s*\d{1,2})[-–\.,\/=\s]*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-–\.,\/=\s]*(\d{4}\s*[\|}<])", "{{$1$2$3date$4 $5 $6");
//remove punctuation from mmm dd yyyy
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-\.\/,]\s*(\d{1,2}),?[-\.\/]\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-\.\/,]\s*(\d{1,2}),?[-\.\/]\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)[-\.\/,]\s*(\d{1,2}),?[-\.\/]\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
//remove leading zero
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*0(\d),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*0(\d),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry|lay)?date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*0(\d),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*Find a Grave)([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*0(\d),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*NCES)([^}]+)(\s*\|\s*access_date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*0(\d),?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5, $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)0(\d)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)0(\d)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:entry|lay)?date\s*=\s*)0(\d(?:–\d{1,2})?)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Ii]nternetquelle)([^}]+)(\s*\|\s*zugriff\s*=\s*)0(\d)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*IUCN)([^}]+)(\s*\|\s*downloaded\s*=\s*)0(\d)\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4 $5 $6");
//change letter o to zero
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|entry|publication-?)?date\s*=\s*[1-3])[Oo]\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}\s*[\|}<])", "{{$1$2${3}0 $4 $5");
//convert Sept to Sep in range
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug)\.?[-–](Sep)t\.?\s*(\d{4}\s*[\|}<])", "{{$1$2$3$4–$5 $6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*Sep)t\.?[-–](Oct|Nov|Dec)\.?\s*(\d{4}\s*[\|}<])", "{{$1$2$3–$4 $5");
//fix circa
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:(?:publication-?)?date|year)\s*=\s*)(?:circa|ca?|approx)\.?\s*(\d{4}s?)\.?(\s*[\|}<])", "{{$1$2$3c. $4$5");
//add origyear
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*2\d{3})\s*\[(1\d{3})\](\s*[\|}<])", "{{$1$2$3 |origyear=$4$5");
//remove double year
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}),?\s*\5(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}),?\s*\5(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}),?\s*\5(\s*[\|}<])", "{{$1$2$3$4 $5$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*archivedate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4}),?\s*\6(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*accessdate\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4}),?\s*\6(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4}),?\s*\6(\s*[\|}<])", "{{$1$2$3$4 $5, $6$7");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{4})-\4-(\d{2})-(\d{2}\s*[\|}<])", "{{$1$2$3$4-$5-$6");
  ArticleText = Regex.Replace(ArticleText, @"{{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access|publication-?)?date\s*=\s*)(\d{4})-(\d{2})-(\d{2})\s+\4(\s*[\|}<])", "{{$1$2$3$4-$5-$6$7");
//add edition
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*\d{4}),?\s*[\(\[]?(\d+(?:st|nd|rd|th)|First|Second|Third|Fourth|Facsimile|Hardcover|Paperback|Reissue|Reprint)\.?\s*(?:ed(?:\.|ition)?)?[\)\]]?(\s*[\|}<])", "{{$1$2$3|edition=$4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*)(\d+(?:st|nd|rd|th)|First|Second|Third|Fourth|Facsimile|Hardcover|Paperback|Reissue|Reprint)\.?\s*(?:ed(?:\.|ition)?),?\s*(\d{4})(\s*[\|}<])", "{{$1$2$3$5|edition=$4$6");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(\d+(?:st|nd|rd|th)|First|Second|Third|Fourth|Facsimile|Hardcover|Paperback|Reissue|Reprint)\.?\s*(?:ed(?:\.|ition)?),?\s*\(?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?),?\s*(\d{4})\)?,?(\s*[\|}<])", "{{$1$2$3date$4$6 $7|edition=$5$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(\d+(?:st|nd|rd|th)|First|Second|Third|Fourth|Facsimile|Hardcover|Paperback|Reissue|Reprint)\.?\s*(?:ed(?:\.|ition)?),?\s*\(?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2}),?\s*(\d{4})\)?,?(\s*[\|}<])", "{{$1$2$3date$4$6 $7, $8|edition=$5$9");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:date|year)(\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)?,?\s*(\d{4}),?\s*\(?(\d+(?:st|nd|rd|th)|First|Second|Third|Fourth|Facsimile|Hardcover|Paperback|Reissue|Reprint)\.?\s*(?:ed(?:\.|ition)?)\)?(\s*[\|}<])", "{{$1$2$3date$4$5 $6|edition=$7$8");
//add issue
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)Issue\s*\#?(\d+)[,;]?\s*(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})(\s*[\|}<])", "{{$1$2$3$5$6 $7|issue=$4$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(\d{0,2}(?:–\d{1,2})?\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})\s*[,;–]?\s*\(?Issue\s*\#?(\d+)\)?(\s*[\|}<])", "{{$1$2$3$4$5 $6|issue=$7$8");
//add volume
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)Volume\s*(\d+),?\s*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})(\s*[\|}<])", "{{$1$2$3$5 $6|volume=$4$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4}),?\s*Volume\s*(\d+)(\s*[\|}<])", "{{$1$2$3$4 $5|volume=$6$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*\d{4}),?\s*Volume\s*(\d+\s*[\|}<])", "{{$1$2$3 |volume=$4");
//add volume & issue
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(?:year|date)(\s*=\s*)Vol(?:ume|\.)?\s*(\d+|[XLVI]+),?\s*(?:Issue|Number|No\.)\s*(\d+)[,;\/\.]?\s*\(?(\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Autumn|Fall|Winter),?\s*(\d{4})\)?(\s*[\|}<])", "{{$1$2$3volume$4$5 |issue$4$6 |date$4$7$8 $9$10");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)(year|date)(\s*=\s*)Vol(?:ume|\.)?\s*(\d+|[XLVI]+),?\s*(?:Issue|Number|No\.)\s*(\d+)[,;\/\.]?\s*(\d{4}\s*[\|}<])", "{{$1$2$3volume$5$6 |issue$5$7 |$4$5$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Autumn|Fall|Winter),?\s*(\d{4})\.?,?\s*-?\s*\(?Vol(?:ume|\.)?\s*(\d+|[XLVI]+),?\s*(?:Issue|No\.|Number)\s*(\d+)\)?(\s*[\|}<])", "{{$1$2$3$4 $5 |volume=$6 |issue=$7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?|Spring|Summer|Autumn|Fall|Winter)\s*(\d{1,2}),?\s*(\d{4})\.?,?\s*-?\s*\(?Vol(?:ume|\.)?\s*(\d+|[XLVI]+),?\s*(?:Issue|No\.|Number)\s*(\d+)\)?(\s*[\|}<])", "{{$1$2$3$4 $5, $6 |volume=$7 |issue=$8$9");
//change date to volume/issue
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*)date(\s*=\s*)Vol\.\s*(\d+),?(\s*)Issue(\s*\d+\s*[\|}<])", "{{$1$2$3volume$4$5$6|issue=$7");
//add subscription/registration
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4})\s*\((subscription|registration) (?:required|needed)\)(\s*[\|}<])", "{{$1$2$3$4 $5, $6|$7=yes$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4})\s*{{(subscription|registration)\s*(?:required|needed)?}}(\s*[\|}<])", "{{$1$2$3$4 $5$6|$7=yes$8");
//add language
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4}\s*)\((Portuguese)\)(\s*[\|}<])", "{{$1$2$3$4 $5$6|language=$7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4}\s*){{(\w{2}) icon}}(\s*[\|}<])", "{{$1$2$3$4 $5$6|language=$7$8");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{4}-\d{2}-\d{2})\s*\((Portuguese)\)(\s*[\|}<])", "{{$1$2$3|language=$4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{4}-\d{2}-\d{2})\s*{{(\w{2}) icon}}(\s*[\|}<])", "{{$1$2$3|language=$4$5");
//add page
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*\d{4})[,;]?\s*p(?:age|g?\.)\s*(\d+)(\s*[\|}<])", "{{$1$2$3|page=$4$5");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4}),?\s*p\.\s*(\d+\s*[\|}<])", "{{$1$2$3$4 $5$6|page=$7");
//add pages
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*date\s*=\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{4})[,;]?\s*p(?:ages|p\.?)\s*([\d-]+)(\s*[\|}<])", "{{$1$2$3$4 $5|pages=$6$7");
//removed bold
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*)'''(\d{4})'''(\s*[\|}<])", "{{$1$2$3$4$5");
//moved dead link
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{0,2}\s*)(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|June?|July?|Aug(?:ust)?|Sept?(?:ember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s*(\d{1,2},?\s*)?(\d{4})\s*({{dead(?: link)\|date=(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d{4}}})\s*}}", "{{$1$2$3$4 $5$6}}$7");
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:archive|access)?date\s*=\s*\d{4}-\d{2}-\d{2})\s*({{dead(?: link)?\|date=(?:January|February|March|April|May|June|July|August|September|October|November|December)\s\d{4}}})\s*}}", "{{$1$2$3}}$4");
//move inconsistent citations
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*year\s*=\s*\d{4})\s*({{inconsistent citations}})\s*}}", "{{$1$2$3}}$4");
//fixed n.d.
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*(?:date|year)\s*=\s*)n\.?\s*d\.?(\s*[\|}<])", "{{$1$2$3n.d.$4");;
//fixed PAHM
  ArticleText = Regex.Replace(ArticleText, @"(?i){{(\s*[Cc]it(?:e|ation))([^}]+)(\s*\|\s*publisher\s*=\s*)\|\s*date\s*=\s*(Pennsylvania Historical & Museum Commission\s*[\|}<])", "{{$1$2$3$4");
 return ArticleText;
 }