İçeriğe atla

Kullanıcı:ToprakBot/AWB modülleri/Kombo

Vikipedi, özgür ansiklopedi
Modül kombosu

AutoWikiBrowser tek seferde birden fazla modül kullanmaya müsaade etmediği için Yalın URL, kaynakça, kaynak tarihi ve görünmez karakter modülü birleştirildi. Birleştirilen modüller hakkında daha fazla bilgi almak veya ayrı ayrı kullanmak için sayfalarına bakın.

//AutoWikiBrowser - Modül kombosu - 10 Mayıs 2024
//Yazar: ToprakM
		string Tercuman(string eskiay) {
            switch (eskiay.ToLower()) {
				case "january":
				   return "Ocak";
				case "february":
					return "Şubat";
				case "march":
					return "Mart";
				case "april":
					return "Nisan";
				case "may":
					return "Mayıs";
				case "june":
					return "Haziran";
				case "july":
					return "Temmuz";
				case "august":
					return "Ağustos";
				case "september":
					return "Eylül";
				case "october":
					return "Ekim";
				case "november":
					return "Kasım";
				case "december":
					return "Aralık";
				default:
					return string.Empty;
			}
        }
		
        public string ProcessArticle(string ArticleText, string ArticleTitle, int wikiNamespace, out string Summary, out bool Skip) {
		
			Skip = false;
			Summary = "";
			
			//Kaynakça
			Match kat = Regex.Match(ArticleText, @"\[\[[KkCc]ategor[yi]:");
			Match disbag = Regex.Match(ArticleText, @"==(\s*|)[Dd][Iıİi][SsŞş]\s*[Bb][Aa][ĞğGg][Ll][Aa][Nn][Tt][Iıİi][Ll][Aa][[Rr](\s*|)==");
			Match taslak = Regex.Match(ArticleText, @"{{.*(-|)[Tt]aslak(\s*|)}}");

			Regex one = new Regex(@"([Kk][Aa][Yy][Nn][Aa][Kk][ÇçCc][Aa]|==(\s*|)[Kk][Aa][Yy][Nn][Aa][Kk](\s*|)==)", RegexOptions.IgnoreCase);
			Regex two = new Regex(@"(R|r)eferences", RegexOptions.IgnoreCase);
			Regex three = new Regex(@"==\s*(R|r)eferans(lar)\s*==", RegexOptions.IgnoreCase);
			Regex four = new Regex(@"{{\s*reflist", RegexOptions.IgnoreCase);
			Regex five = new Regex(@"==\s*[Kk]aynaklar\s*==", RegexOptions.IgnoreCase);

			Regex six = new Regex(@"\=\=\s*Kaynakça\s*\=\=\r\n\[\[(Kategori|Category)\:\s*", RegexOptions.Singleline);
			Regex seven = new Regex(@"\=\=\s*Kaynakça\s*\=\=\r\n\r\n\[\[(Kategori|Category)\:\s*", RegexOptions.Singleline);

			Regex eight = new Regex(@"\{\{\s*([Kk]aynakça|[Rr]eflist|[Rr]eferences|[Rr]eference|[Kk]aynak listesi|[Rr]eferanslar|[Rr]efs)\s*(\||\}\})");
			Regex nine = new Regex(@"<\s*references\s*(\/|)\s*\>");
			
			if(ArticleText.Contains("<ref")) {
				if(!(eight.Match(ArticleText).Success||nine.Match(ArticleText).Success)) {
					if(!(one.Match(ArticleText).Success||two.Match(ArticleText).Success||three.Match(ArticleText).Success||four.Match(ArticleText).Success||five.Match(ArticleText).Success)) {
						if(disbag.Success) ArticleText = ArticleText.Insert(disbag.Index, "== Kaynakça ==\n{{kaynakça|30em}}\r\n\n");
						else if(taslak.Success) ArticleText = ArticleText.Insert(taslak.Index, "\n== Kaynakça ==\n{{kaynakça|30em}}\r\n\n");
						else if(kat.Success) ArticleText = ArticleText.Insert(kat.Index, "== Kaynakça ==\n{{kaynakça|30em}}\r\n\n");
						else ArticleText += "\r\n\r\n== Kaynakça ==\n{{kaynakça|30em}}";

						ArticleText = ArticleText.Replace("\n\n== Kaynakça ==", "\n== Kaynakça ==");
						Summary = "kaynakça başlığı ekleniyor";
					}

					if(six.Match(ArticleText).Success) {
						Regex R1 = new Regex(@"\=\=\s*Kaynakça\s*\=\=");
						ArticleText = R1.Replace(ArticleText, "== Kaynakça ==\r\n{{kaynakça|30em}}\n");
						Summary = "; kaynakça şablonu ekleniyor";
					} else if(seven.Match(ArticleText).Success) {
						Regex R2 = new Regex(@"\=\=\s*Kaynakça\s*\=\=");
						ArticleText = R2.Replace(ArticleText, "== Kaynakça ==\r\n{{kaynakça|30em}}");
						Summary = "; kaynakça şablonu ekleniyor ";
					}
					Regex kaydz = new Regex(@"(\S\n{1})(\=\= Kaynakça ==)");
					ArticleText = kaydz.Replace(ArticleText, "$1\n$2");
				}
			}
		
			//Not listesi
			Regex şablon = new Regex(@"{{\s*?(efn|adn|adn\-la|adş)\s*?(\||\})", RegexOptions.IgnoreCase);
			Regex notlistesi = new Regex(@"{{\s*?(not\slistesi|notlar|notes|notelist)\s*?(\||\})", RegexOptions.IgnoreCase);
			Regex notbaslik = new Regex(@"==\s*(not listesi|notlar|note list|notes|notelist)\s*==", RegexOptions.IgnoreCase);
			Regex refgroup = new Regex(@"(\<|{{)\s*?(references|ref|kaynakça)\s*?\|?(group|grup)", RegexOptions.IgnoreCase);
			
			if (şablon.Match(ArticleText).Success) {
				if (!notlistesi.Match(ArticleText).Success&&!refgroup.Match(ArticleText).Success&&!notbaslik.Match(ArticleText).Success) {
				
					Match kaynakça = Regex.Match(ArticleText, @"\=\=\s*?Kaynakça\s*?\=\=", RegexOptions.IgnoreCase);
				
					if (kaynakça.Success) ArticleText = ArticleText.Insert(kaynakça.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
					else if (disbag.Success) ArticleText = ArticleText.Insert(disbag.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
					else if (taslak.Success) ArticleText = ArticleText.Insert(taslak.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
					else if (kat.Success) ArticleText = ArticleText.Insert(kat.Index, "== Not listesi ==\n{{not listesi}}\r\n\n");
					else ArticleText += "\r\n\r\n== Not listesi ==\n{{not listesi}}";
					Summary += "; not listesi ekleniyor";
					
					Regex notdz = new Regex(@"(\S\n{1})(\=\= Not listesi ==)");
					ArticleText = notdz.Replace(ArticleText, "$1\n$2");
				}
			}
			
			//Yalın URL
			int bos = 0;
			
			Regex sablonkontrol = new Regex(@"\{\{\s*?(Şablon\:|)\s*?(Yalın(_|\s)URL\'leri(_|\s)temizle|Satır(_|\s)içi(_|\s)yalın(_|\s)URL|kaynakları(_|\s)düzenle|düzenle|çoklu(_|\s)sorun)", RegexOptions.IgnoreCase);
			Regex yalinurl = new Regex(@"<ref[^>]*?\>\s*\[?\s*https?:[^>< \|\[\]]+\s*\]?\s*<\s*\/\s*ref", RegexOptions.IgnoreCase);
			Regex satirici = new Regex(@"(<ref[^>]*?\>)\s*\[?\s*(https?:[^>< \|\[\]]+)\s*\]?\s*(<\s*\/\s*ref)", RegexOptions.IgnoreCase);

			foreach(Match match in yalinurl.Matches(ArticleText)) bos++;

			if((bos!=0)&&!(sablonkontrol.Match(ArticleText).Success)&&(yalinurl.Match(ArticleText).Success)) {
				if(bos>=3) ArticleText = "{{Yalın URL'leri temizle|tarih={{yk:CURRENTMONTHNAME}} {{yk:CURRENTYEAR}}}}\n" + ArticleText;
				else ArticleText = satirici.Replace(ArticleText, "$1$2 {{Satır içi yalın URL|tarih={{yk:CURRENTMONTHNAME}} {{yk:CURRENTYEAR}}}}$3");
				Summary += "; yalın URL bakım şablonu eklendi";
			}
			
			//Görünmez karakterler
			List<string> karakterler = new List<string>();
			List<string> gereksiz = new List<string>();

			Regex arapça = new Regex(@"[\u0621-\u064A]"); //Arapça dedektörü
			Regex ibranice = new Regex(@"[\u0590-\u05FF]"); //İbranice dedektörü

			//lüzumsuz karakter kaldırıcı
			Regex lefttoright = new Regex(@"(\u200E)"); //left-to-rigt
			Regex righttoleft = new Regex(@"(\u200F)"); //rigt-to-left

			if(!(arapça.Match(ArticleText).Success||ibranice.Match(ArticleText).Success)) {
				if(lefttoright.Match(ArticleText).Success) {
					ArticleText = lefttoright.Replace(ArticleText, "");
					gereksiz.Add("\"[[en:left-to-right mark|left-to-right]]\" (U+200E)");
				} else if(righttoleft.Match(ArticleText).Success) {
					ArticleText = righttoleft.Replace(ArticleText, "");
					gereksiz.Add("\"[[en:right-to-left mark|right-to-left]]\" (U+200F)");
				}
			}

			bool kirilmaz = false;
			Regex luzumsuz1 = new Regex(@"\u00a0\r(\n*)");
			if(luzumsuz1.Match(ArticleText).Success) { //Satır sonunda kırılmaz boşluk
				ArticleText=luzumsuz1.Replace(ArticleText, "$1");
				gereksiz.Add("[[Ayrılmaz alan|kırılmaz boşluk]] (U+00A0)");
				kirilmaz = true;
			}

			Regex luzumsuz2 = new Regex(@"\r(\n*)\u00a0");
			if(luzumsuz2.Match(ArticleText).Success) { //Satır başında kırılmaz boşluk
				ArticleText = luzumsuz2.Replace(ArticleText, "$1");
				if(!kirilmaz) {
					gereksiz.Add("[[Ayrılmaz alan|kırılmaz boşluk]] (U+00A0)");
					kirilmaz = true;	
				}
			}

			Regex luzumsuz3 = new Regex(@"(\u00a0(\s)){1,}");
			if(luzumsuz3.Match(ArticleText).Success) { //Art arda kırılmaz boşluk-boşluk
				ArticleText = luzumsuz3.Replace(ArticleText, "$2");
				if(!kirilmaz) {
					gereksiz.Add("[[Ayrılmaz alan|kırılmaz boşluk]] (U+00A0)");
					kirilmaz = true;	
				}
			}

			Regex luzumsuz4 = new Regex(@"(\={2,4})(.*?\u00a0.*?)(\={2,4})");
			if(luzumsuz4.Match(ArticleText).Success) { //Başlık içinde kırılmaz boşluk
				bool bittimi = false;
				while(bittimi==false) {
					var cikar = luzumsuz4.Match(ArticleText);
					if(luzumsuz4.Match(ArticleText).Success) { //İlki kırılmaz boşluk
						var baslik = cikar.Groups[2].Value;
						baslik = baslik.Replace(" ", " ");
						ArticleText = luzumsuz4.Replace(ArticleText, "$1"+baslik+"$3", 1);
					} else bittimi = true;
				}
				if(!kirilmaz) {
					gereksiz.Add("[[Ayrılmaz alan|kırılmaz boşluk]] (U+00A0)");
				}
			}

			Regex luzumsuz5 = new Regex(@"(\s*)\u200B{1,}");
			if(luzumsuz5.Match(ArticleText).Success) { //Gereksiz zero-width space
				ArticleText = luzumsuz5.Replace(ArticleText, "$1");
				gereksiz.Add("[[en:Zero-width space|Zero-width space]] (U+200B)");
			}

			Regex luzumsuz6 = new Regex(@"(\s*)\uFEFF{1,}");
			if(luzumsuz6.Match(ArticleText).Success) { //Gereksiz byte order mark
				ArticleText = luzumsuz6.Replace(ArticleText, "$1");
				gereksiz.Add("[[en:Byte order mark|Byte order mark]] (U+FEFF)");
			}

			Regex luzumsuz7 = new Regex(@"\u0307");
			if(luzumsuz7.Match(ArticleText).Success) { //combining dot above
				if(!(ArticleTitle=="Ayırıcı im"||ArticleTitle=="2021 Filistin-İsrail çatışmaları"||ArticleTitle=="Denesulinece"||ArticleTitle=="Hamilton mekaniği")) { //İstisna maddeler
					Regex luzumsuz7a = new Regex(@"ı\u0307");
					Regex luzumsuz7b = new Regex(@"i\u0307");
					if(luzumsuz7a.Match(ArticleText).Success) {
						ArticleText = luzumsuz7a.Replace(ArticleText, "i");
						gereksiz.Add("[[:en:Dot (diacritic)|Combining Dot Above]] (U+0307)");
					} else if(luzumsuz7b.Match(ArticleText).Success) {
						ArticleText = luzumsuz7b.Replace(ArticleText, "i");
						gereksiz.Add("[[:en:Dot (diacritic)|Combining Dot Above]] (U+0307)");
					}
				}
			}

				//karakter gösterici
			Regex bulucu1 = new Regex(@"(\u00a0)");
			if(bulucu1.Match(ArticleText).Success) { //Kırılmaz boşluk
				ArticleText = bulucu1.Replace(ArticleText, "&nbsp;");
				karakterler.Add("[[Ayrılmaz alan|kırılmaz boşluk]] (U+00A0)");
			}

			Regex bulucu2 = new Regex(@"(\u200B)");
			if(bulucu2.Match(ArticleText).Success) { //Zero-width space
				ArticleText = bulucu2.Replace(ArticleText, "&#8203;");
				karakterler.Add("[[en:Zero-width space|Zero-width space]] (U+200B)");
			}

			Regex bulucu3 = new Regex(@"(\u2009)");
			if(bulucu3.Match(ArticleText).Success) { //Thin space
				ArticleText = bulucu3.Replace(ArticleText, "&thinsp;");
				karakterler.Add("[[en:Thin space|Thin space]] (U+2009)");
			}

			Regex bulucu4 = new Regex(@"(\u200c)");
			if(bulucu4.Match(ArticleText).Success) { //Zero-width non-joiner
				ArticleText = bulucu4.Replace(ArticleText, "&zwnj;");
				karakterler.Add("[[en:Zero-width non-joiner|Zero-width non-joiner]] (U+200C)");
			}

			Regex bulucu5 = new Regex(@"(\u3000)");
			if(bulucu5.Match(ArticleText).Success) { //Ideographic space
				ArticleText = bulucu5.Replace(ArticleText, "&#x3000;");
				karakterler.Add("[[en:Whitespace_character#Unicode|Ideographic space]] (U+3000)");
			}

			Regex bulucu6 = new Regex(@"(\u2002)");
			if(bulucu6.Match(ArticleText).Success) { //En space
				ArticleText = bulucu6.Replace(ArticleText, "&ensp;");
				karakterler.Add("[[en:En (typography)|En space]] (U+2002)");
			}

			Regex bulucu7 = new Regex(@"(\u200A)");
			if(bulucu7.Match(ArticleText).Success) { //Hair space
				ArticleText = bulucu7.Replace(ArticleText, "&hairsp;");
				karakterler.Add("[[en:Whitespace_character#Hair_spaces_around_dashes|Hair space]] (U+200A)");
			}

			Regex bulucu8 = new Regex(@"(\uFEFF)");
			if(bulucu8.Match(ArticleText).Success) { //Byte order mark
				ArticleText = bulucu8.Replace(ArticleText, "&#65279;");
				karakterler.Add("[[en:Byte order mark|Byte order mark]] (U+FEFF)");
			}

			Regex bulucu9 = new Regex(@"(\u2008)");
			if(bulucu9.Match(ArticleText).Success) { //Punctuation space
				ArticleText = bulucu9.Replace(ArticleText, "&#8200;");
				karakterler.Add("[[wikt:en:punctuation_space|Punctuation space]] (U+2008)");
			}

			Regex bulucu10 = new Regex(@"(\u200D)");
			if(bulucu10.Match(ArticleText).Success) { //Zero-width joiner
				ArticleText = bulucu10.Replace(ArticleText, "&zwj;");
				karakterler.Add("[[en:Zero-width joiner|Zero-width joiner]] (U+200D)");
			}

			Regex bulucu11 = new Regex(@"(\u202F)");
			if(bulucu11.Match(ArticleText).Success) { //Narrow no-break space
				ArticleText = bulucu11.Replace(ArticleText, "&#8239;");
				karakterler.Add("[[en:Non-breaking_space#Width_variation|Narrow no-break space]] (U+202F)");
			}

			Regex bulucu12 = new Regex(@"(\u00AD)");
			if(bulucu12.Match(ArticleText).Success) { //Soft hyphen	
				ArticleText = bulucu12.Replace(ArticleText, "&shy;");
				karakterler.Add("[[en:Soft hyphen|Soft hyphen]] (U+00AD)");
			}

				//değişiklik özeti
			string str = string.Empty;
			foreach(var item in karakterler) str = str + item + ", ";

			string str2 = string.Empty;
			foreach(var item2 in gereksiz) str2 = str2 + item2 + ", ";

			if(str!="") {
				str=str.Remove(str.Length-2);
				Summary += "; Görünmez karakterler fark edilebilir kılındı: " + str;
			}
			if(!(str2=="")) {
				str2 = str2.Remove(str2.Length-2);
				Summary += "; Gereksiz görünmez karakterler kaldırıldı: " + str2;
			}
			
			//Kaynak çevirmeni
				//tarih - çeviri
				//January 23, 2021
			Regex tarihRegex1 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(January|February|March|April|May|June|July|August|September|October|November|December)\s*?(\d{1,2})\s*?(,|)\s*?(\d{4})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex1.Replace(ArticleText, match => {
				var ay = match.Groups[7].Value;
				ay = Tercuman(ay);
				return match.Groups[1].Value + match.Groups[8].Value + " " + ay + " " + match.Groups[10].Value;
			});

				//23 January 2021
			Regex tarihRegex2 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{1,2})\s*?(January|February|March|April|May|June|July|August|September|October|November|December)\s*?(\d{4})\s*?", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex2.Replace(ArticleText, match => {
				var ay = match.Groups[8].Value;
				ay = Tercuman(ay);
				return match.Groups[1].Value + match.Groups[7].Value + " " + ay + " " + match.Groups[9].Value;
			});

				//2021-01-23
			Regex tarihRegex3 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{4})\-(\d{1,2})\-(\d{1,2})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex3.Replace(ArticleText, match => {
				var ay = match.Groups[8].Value;
				string gun = match.Groups[9].Value;

				switch (ay) {
					case "1":
					case "01":
						ay = "Ocak";
						break;
					case "2":
					case "02":
						ay = "Şubat";
						break;
					case "3":
					case "03":
						ay = "Mart";
						break;
					case "4":
					case "04":
						ay = "Nisan";
						break;
					case "5":
					case "05":
						ay = "Mayıs";
						break;
					case "6":
					case "06":
						ay = "Haziran";
						break;
					case "7":
					case "07":
						ay = "Temmuz";
						break;
					case "8":
					case "08":
						ay = "Ağustos";
						break;
					case "9":
					case "09":
						ay = "Eylül";
						break;
					case "10":
						ay = "Ekim";
						break;
					case "11":
						ay = "Kasım";
						break;
					case "12":
						ay = "Aralık";
						break;
					default:
						break;
				}

				Regex sıfırçıkarıcı = new Regex(@"0(\d)");
				gun = sıfırçıkarıcı.Replace(gun, "$1");

				return match.Groups[1].Value + gun + " " + ay + " " + match.Groups[7].Value;
			});

				//tarih - düzelt
				//21 Ocak, 2021 ve Ocak, 2021
			Regex tarihRegex4 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{1,2}|)\s*?(Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*?\,\s*?(\d{4})\s*?", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex4.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[7].Value + " " + match.Groups[8].Value + " " + match.Groups[9].Value;
			});

				//21 Ocak 2021 Pazartesi
			Regex tarihRegex5 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{1,2})\s*?(Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*?(\d{4})\s*?(Pazartesi|Sal[Iı]|Çarşamba|Perşembe|Cumartes[iİ]|Cuma|Pazar)\s*?", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex5.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[7].Value + " " + match.Groups[8].Value + " " + match.Groups[9].Value;
			});

				//21 ocAk 2021
			Regex tarihRegex6 = new Regex(@"(\s*?\|\s*?(erişim(\-|)tarihi|tarih|access(\-|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{1,2})\s*?(Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*?(\d{4})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex6.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[7].Value + " " + match.Groups[8].Value.Substring(0, 1).ToUpper() + match.Groups[8].Value.Substring(1).ToLower() + " " + match.Groups[9].Value;
			});

				//Aralık 2020-Ocak 2021
			Regex tarihRegex7 = new Regex(@"(\s*?\|\s*?(erişim(\-|)tarihi|tarih|access(\-|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)((Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*\d{4})\-((Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*\d{4})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex7.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[7].Value + " - " + match.Groups[9].Value;
			});

				//Ocak 2021
			Regex tarihRegex8 = new Regex(@"(\s*?\|\s*?(erişim(\-|)tarihi|tarih|access(\-|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)(\d{4})\s*(Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*(\||\}\})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex8.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[8].Value + " " + match.Groups[7].Value + match.Groups[9].Value;
			});

			Regex tarihRegex9 = new Regex(@"(\s*?\|\s*?(erişim(\-|\s|)tarihi|tarih|access(\-|\s|)date|accessdate|date|archive(\-|)date|arşiv(\-|)tarihi)\s*?\=\s*?)0(\d)\s*(Ocak|Şubat|Mart|Nisan|Mayıs|Haziran|Temmuz|Ağustos|Eylül|Ekim|Kas[Iı]m|Aral[Iı]k)\s*(\d{4})", RegexOptions.IgnoreCase);
			ArticleText = tarihRegex9.Replace(ArticleText, match => {
				return match.Groups[1].Value + match.Groups[7].Value + " " + match.Groups[8].Value + " " + match.Groups[9].Value;
			});

				//basım
			Regex basımçekici = new Regex(@"\|\s*?basım\s*?\=\s*?((\d{1,2})(st|nd|rd|th))\s*?(\||\}\})", RegexOptions.IgnoreCase);
			ArticleText = basımçekici.Replace(ArticleText, match => {
				string basım = match.Groups[1].Value;

				Regex sayı = new Regex(@"(\d{1,2})(st|nd|rd|th)", RegexOptions.IgnoreCase);
				basım = sayı.Replace(basım, "$1.");

				return "|basım=" + basım + match.Groups[4].Value;
			});

			return ArticleText;
		}