From dc6a5d5114b657da7426e84e28a124ecb5c773cd Mon Sep 17 00:00:00 2001 From: ckeaney Date: Mon, 30 Jan 2023 12:41:28 +0000 Subject: [PATCH] Revert "Regex additions and testing" This reverts commit bbb9e44045926fd6fd71ff58b9f7cfd89ca62232. --- Patterns/Dutch/Dutch-DateTime.yaml | 2 +- Patterns/English/English-DateTime.yaml | 4 +- Patterns/French/French-DateTime.yaml | 4 +- Patterns/German/German-DateTime.yaml | 4 +- Patterns/Italian/Italian-DateTime.yaml | 4 +- Patterns/Portuguese/Portuguese-DateTime.yaml | 4 +- Patterns/Spanish/Spanish-DateTime.yaml | 4 +- .../resources/english_date_time.py | 4 +- .../resources/french_date_time.py | 4 +- .../resources/german_date_time.py | 4 +- .../resources/italian_date_time.py | 4 +- .../resources/portuguese_date_time.py | 4 +- .../resources/spanish_date_time.py | 4 +- Specs/DateTime/Dutch/DatePeriodExtractor.json | 11 ----- Specs/DateTime/Dutch/DatePeriodParser.json | 23 ---------- .../DateTime/English/DatePeriodExtractor.json | 12 ----- Specs/DateTime/English/DatePeriodParser.json | 23 ---------- .../DateTime/French/DatePeriodExtractor.json | 12 ----- Specs/DateTime/French/DatePeriodParser.json | 23 ---------- .../DateTime/German/DatePeriodExtractor.json | 12 ----- Specs/DateTime/German/DatePeriodParser.json | 23 ---------- .../DateTime/Italian/DatePeriodExtractor.json | 12 ----- Specs/DateTime/Italian/DatePeriodParser.json | 23 ---------- .../Portuguese/DatePeriodExtractor.json | 12 ----- .../DateTime/Portuguese/DatePeriodParser.json | 23 ---------- Specs/DateTime/Spanish/DateParser.json | 46 ------------------- .../DateTime/Spanish/DatePeriodExtractor.json | 12 ----- 27 files changed, 25 insertions(+), 292 deletions(-) diff --git a/Patterns/Dutch/Dutch-DateTime.yaml b/Patterns/Dutch/Dutch-DateTime.yaml index 4023d4711a..b38027c4ec 100644 --- a/Patterns/Dutch/Dutch-DateTime.yaml +++ b/Patterns/Dutch/Dutch-DateTime.yaml @@ -163,7 +163,7 @@ BetweenRegex: !nestedRegex def: \b(tussen\s+)({DayRegex})\s*{RangeConnectorRegex}\s*({DayRegex})\s+{MonthSuffixRegex}((\s+|\s*,\s*){YearRegex})?\b references: [ DayRegex, RangeConnectorRegex , MonthSuffixRegex, YearRegex ] RelativeYearRegex: !nestedRegex - def: ({YearRegex}|\'?{TwoDigitYearRegex}|(?volgende?|komende?|aanstaande?|aankomende?|huidige?|vorige?|afgelopen|dit)\s+jaar) + def: ({YearRegex}|{TwoDigitYearRegex}|(?volgende?|komende?|aanstaande?|aankomende?|huidige?|vorige?|afgelopen|dit)\s+jaar) references: [ YearRegex, TwoDigitYearRegex ] MonthWithYear: !nestedRegex def: \b(({WrittenMonthRegex}(\.)?(\s*)[/\\\-\.,]?(\s+(van|over|in))?(\s*){RelativeYearRegex})|({RelativeYearRegex}(\s*),?(\s*){WrittenMonthRegex}))\b diff --git a/Patterns/English/English-DateTime.yaml b/Patterns/English/English-DateTime.yaml index a637feddf7..f0b18e43f8 100644 --- a/Patterns/English/English-DateTime.yaml +++ b/Patterns/English/English-DateTime.yaml @@ -162,7 +162,7 @@ BetweenRegex: !nestedRegex def: \b(between\s+)({DayRegex}|{WrittenOrdinalDayRegex})\s*{RangeConnectorRegex}\s*({DayRegex}|{WrittenOrdinalDayRegex})\s+{MonthSuffixRegex}((\s+|\s*,\s*){YearRegex})?\b references: [ DayRegex, RangeConnectorRegex , MonthSuffixRegex, YearRegex, WrittenOrdinalDayRegex ] MonthWithYear: !nestedRegex - def: \b((({WrittenMonthRegex}[\.]?|((the\s+)?(?first|1st|second|2nd|third|3rd|fourth|4th|fifth|5th|sixth|6th|seventh|7th|eighth|8th|ninth|9th|tenth|10th|eleventh|11th|twelfth|12th|last)\s+month(?=\s+(of|in))))((\s*)[/\\\-\.,]?(\s+(of|in))?(\s*)({YearRegex}|\'?{TwoDigitYearRegex}|(?following|next|last|this)\s+year)|\s+(of|in)\s+{TwoDigitYearRegex}))|(({YearRegex}|(?following|next|last|this)\s+year)(\s*),?(\s*){WrittenMonthRegex}))\b + def: \b((({WrittenMonthRegex}[\.]?|((the\s+)?(?first|1st|second|2nd|third|3rd|fourth|4th|fifth|5th|sixth|6th|seventh|7th|eighth|8th|ninth|9th|tenth|10th|eleventh|11th|twelfth|12th|last)\s+month(?=\s+(of|in))))((\s*)[/\\\-\.,]?(\s+(of|in))?(\s*)({YearRegex}|{TwoDigitYearRegex}|(?following|next|last|this)\s+year)|\s+(of|in)\s+{TwoDigitYearRegex}))|(({YearRegex}|(?following|next|last|this)\s+year)(\s*),?(\s*){WrittenMonthRegex}))\b references: [ WrittenMonthRegex, YearRegex, TwoDigitYearRegex ] SpecialYearPrefixes: !simpleRegex def: (calendar|(?fiscal|school)) @@ -240,7 +240,7 @@ MonthOfRegex: !simpleRegex # This is a look-behind assertion. Some cases should extract two digits as year like 11/25/16, where 16 means 2016. # The assertion determines if not connected with am/pm or hour separator (:), which should be a time. DateYearRegex: !nestedRegex - def: (?{BaseDateTime.FourDigitYearRegex}|(?{BaseDateTime.FourDigitYearRegex}|(?l'ann[ée]e)\b MonthWithYear: !nestedRegex - def: \b({WrittenMonthRegex}(\s*),?(\s+de)?(\s*)({YearRegex}|\'?{TwoDigitYearRegex}|(?cette)\s*{YearWordRegex})|{YearWordRegex}\s*({PastSuffixRegex}|{NextSuffixRegex})) + def: \b({WrittenMonthRegex}(\s*),?(\s+de)?(\s*)({YearRegex}|{TwoDigitYearRegex}|(?cette)\s*{YearWordRegex})|{YearWordRegex}\s*({PastSuffixRegex}|{NextSuffixRegex})) references: [ WrittenMonthRegex, YearRegex, TwoDigitYearRegex, YearWordRegex, PastSuffixRegex, NextSuffixRegex ] OneWordPeriodRegex: !nestedRegex def: \b(({RelativeRegex}\s+)?{WrittenMonthRegex}|(la\s+)?(weekend|(fin de )?semaine|week-end|mois|ans?|l'année)\s+{StrictRelativeRegex}|{RelativeRegex}\s+(weekend|(fin de )?semaine|week-end|mois|ans?|l'année)|weekend|week-end|mois|l'année|an)\b @@ -183,7 +183,7 @@ SpecialDate: !nestedRegex def: (?<=\b(au|le)\s+){DayRegex}(?!:)\b references: [ DayRegex ] DateYearRegex: !nestedRegex - def: (?{YearRegex}|\'?{TwoDigitYearRegex}) + def: (?{YearRegex}|{TwoDigitYearRegex}) references: [ YearRegex, TwoDigitYearRegex ] DateExtractor1: !nestedRegex def: \b({WeekDayRegex}(\s+|\s*,\s*))?{MonthRegex}\s*[/\\\.\-]?\s*{DayRegex}(\s*([/\\\.\-]|\bde\b)?\s*{BaseDateTime.FourDigitYearRegex})?\b diff --git a/Patterns/German/German-DateTime.yaml b/Patterns/German/German-DateTime.yaml index 6b0472ac69..410ad403fd 100644 --- a/Patterns/German/German-DateTime.yaml +++ b/Patterns/German/German-DateTime.yaml @@ -106,7 +106,7 @@ BetweenRegex: !nestedRegex def: ((zwischen\s+)({DayRegex})(\s+{MonthSuffixRegex})?\s*{RangeConnectorRegex}\s*({DayRegex})(\s+{MonthSuffixRegex})((\s+|\s*,\s*){YearRegex})?|(zwischen\s+)({DayRegex})(\s+{MonthSuffixRegex})?\s*{RangeConnectorRegex}\s*({DayRegex})(\s+{MonthSuffixRegex})?((\s+|\s*,\s*){YearRegex})?) references: [ DayRegex, RangeConnectorRegex , MonthSuffixRegex, YearRegex ] MonthWithYear: !nestedRegex - def: \b((?apr(il|\.)|aug(ust|\.)|dez(ember|\.)|feb(ruar|ber|\.)|januar|j[äa]n(ner|\.)|jul(e?i|l\.)|jun([io]|\.)|märz|mai|nov(ember|\.)|okt(ober|\.)|sept?(ember|\.))(\s*),?(\s+des)?(\s*)({YearRegex}|\'?{TwoDigitYearRegex}|(?nächste[mn]|letzte[mn]|diese(s|n))\s+jahres)) + def: \b((?apr(il|\.)|aug(ust|\.)|dez(ember|\.)|feb(ruar|ber|\.)|januar|j[äa]n(ner|\.)|jul(e?i|l\.)|jun([io]|\.)|märz|mai|nov(ember|\.)|okt(ober|\.)|sept?(ember|\.))(\s*),?(\s+des)?(\s*)({YearRegex}|{TwoDigitYearRegex}|(?nächste[mn]|letzte[mn]|diese(s|n))\s+jahres)) references: [ YearRegex , TwoDigitYearRegex ] OneWordPeriodRegex: !nestedRegex def: \b((((im\s+)?monat\s+)?({RelativeRegex}\s*(jahr\s*(im\s*)?)?)?(?apr(il|\.)|aug(ust|\.)|dez(ember|\.)|feb(ruar|ber|\.)|j[äa]n(uar|ner|\.)|jul(e?i|l\.)|jun([io]|\.)|märz|mai|nov(ember|\.)|okt(ober|\.)|sept?(ember|\.)))|(?unter\s+der\s+woche)|({RelativeRegex}\s+)?((?werktags|arbeitswoche)|woche(nende)?|monat(s)?|jahr|jahres)(?!(\s+\d+(?!({BaseDateTime.BaseAmDescRegex}|{BaseDateTime.BasePmDescRegex}))|\s+bis\s+heute)))\b @@ -162,7 +162,7 @@ MonthRegex: !simpleRegex #This is a look-behind assertion. Some cases should extract two digits as year like 11/25/16, where 16 means 2016. #The assertion determines if not connected with am/pm or hour separator (:), which should be a time. DateYearRegex: !nestedRegex - def: (?{BaseDateTime.FourDigitYearRegex}|\'?{TwoDigitYearRegex}) + def: (?{BaseDateTime.FourDigitYearRegex}|{TwoDigitYearRegex}) references: [ BaseDateTime.FourDigitYearRegex, TwoDigitYearRegex ] OnRegex: !nestedRegex def: (?<=\bam\s+)({DayRegex}s?)\b diff --git a/Patterns/Italian/Italian-DateTime.yaml b/Patterns/Italian/Italian-DateTime.yaml index 2cc725be97..c08dfbf357 100644 --- a/Patterns/Italian/Italian-DateTime.yaml +++ b/Patterns/Italian/Italian-DateTime.yaml @@ -108,7 +108,7 @@ TwoDigitYearRegex: !nestedRegex #This is a look-behind assertion. Some cases should extract two digits as year like 11/25/16, where 16 means 2016. #The assertion determines if not connected with am/pm or hour separator (:), which should be a time. DateYearRegex: !nestedRegex - def: (?{BaseDateTime.FourDigitYearRegex}|\'?{TwoDigitYearRegex}) + def: (?{BaseDateTime.FourDigitYearRegex}|{TwoDigitYearRegex}) references: [ BaseDateTime.FourDigitYearRegex, TwoDigitYearRegex ] YearSuffix: !nestedRegex def: (,?\s*({DateYearRegex}|{FullTextYearRegex})) @@ -133,7 +133,7 @@ BetweenRegex: !nestedRegex YearWordRegex: !simpleRegex def: \b(?l'anno)\b MonthWithYear: !nestedRegex - def: \b({MonthRegex}(\.)?(\s*)[/\\\-\.,]?(((\s+del)?\s+{YearRegex}|\'?{TwoDigitYearRegex})|((\s+(del|di|il))?\s+(?prossim['o]|passato|quest['o])\s*anno)|((\s+(del)?l')anno\s+(?prossimo|passato)))) + def: \b({MonthRegex}(\.)?(\s*)[/\\\-\.,]?(((\s+del)?\s+{YearRegex}|{TwoDigitYearRegex})|((\s+(del|di|il))?\s+(?prossim['o]|passato|quest['o])\s*anno)|((\s+(del)?l')anno\s+(?prossimo|passato)))) references: [ YearRegex, MonthRegex, TwoDigitYearRegex ] SpecialYearPrefixes: !simpleRegex def: (?fiscale|scolastico) diff --git a/Patterns/Portuguese/Portuguese-DateTime.yaml b/Patterns/Portuguese/Portuguese-DateTime.yaml index fd06bff6ff..41b91b9a6b 100644 --- a/Patterns/Portuguese/Portuguese-DateTime.yaml +++ b/Patterns/Portuguese/Portuguese-DateTime.yaml @@ -85,7 +85,7 @@ OneWordPeriodRegex: !nestedRegex def: \b(((pr[oó]xim[oa]?|[nd]?es[st]e|aquel[ea]|[uú]ltim[oa]?|em)\s+)?(?abr(il)?|ago(sto)?|dez(embro)?|fev(ereiro)?|jan(eiro)?|ju[ln](ho)?|mar([çc]o)?|maio?|nov(embro)?|out(ubro)?|sep?t(embro)?)|({RelativeRegex}\s+)?(ano\s+{SpecialYearPrefixes}|{SpecialYearPrefixes}\s+ano)|(?<=\b(de|do|da|o|a)\s+)?(pr[oó]xim[oa](s)?|[uú]ltim[oa]s?|est(e|a))\s+(fim de semana|fins de semana|semana|m[êe]s|ano)|fim de semana|fins de semana|(m[êe]s|anos)? [àa] data)\b references: [RelativeRegex, SpecialYearPrefixes] MonthWithYearRegex: !nestedRegex - def: \b((((pr[oó]xim[oa](s)?|[nd]?es[st]e|aquele|[uú]ltim[oa]?|em)\s+)?{MonthRegex}|((n?o\s+)?(?primeiro|1o|segundo|2o|terceiro|3o|[cq]uarto|4o|quinto|5o|sexto|6o|s[eé]timo|7o|oitavo|8o|nono|9o|d[eé]cimo(\s+(primeiro|segundo))?|10o|11o|12o|[uú]ltimo)\s+m[eê]s(?=\s+(d[aeo]|[ao]))))\s+((d[aeo]|[ao])\s+)?({YearRegex}|\'?{TwoDigitYearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|[nd]?es[st]e)\s+ano))\b + def: \b((((pr[oó]xim[oa](s)?|[nd]?es[st]e|aquele|[uú]ltim[oa]?|em)\s+)?{MonthRegex}|((n?o\s+)?(?primeiro|1o|segundo|2o|terceiro|3o|[cq]uarto|4o|quinto|5o|sexto|6o|s[eé]timo|7o|oitavo|8o|nono|9o|d[eé]cimo(\s+(primeiro|segundo))?|10o|11o|12o|[uú]ltimo)\s+m[eê]s(?=\s+(d[aeo]|[ao]))))\s+((d[aeo]|[ao])\s+)?({YearRegex}|{TwoDigitYearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|[nd]?es[st]e)\s+ano))\b references: [ MonthRegex, YearRegex, TwoDigitYearRegex ] MonthNumWithYearRegex: !nestedRegex def: ({YearRegex}(\s*?)[/\-\.](\s*?){MonthNumRegex})|({MonthNumRegex}(\s*?)[/\-](\s*?){YearRegex}) @@ -217,7 +217,7 @@ WeekDayEnd: !nestedRegex WeekDayStart: !simpleRegex def: ^\b$ DateYearRegex: !nestedRegex - def: (?{YearRegex}|\'?{TwoDigitYearRegex}) + def: (?{YearRegex}|{TwoDigitYearRegex}) references: [ YearRegex, TwoDigitYearRegex ] DateExtractor1: !nestedRegex # (domingo,)? 5 de Abril diff --git a/Patterns/Spanish/Spanish-DateTime.yaml b/Patterns/Spanish/Spanish-DateTime.yaml index 7e123ffb64..5d790e2f21 100644 --- a/Patterns/Spanish/Spanish-DateTime.yaml +++ b/Patterns/Spanish/Spanish-DateTime.yaml @@ -96,7 +96,7 @@ OneWordPeriodRegex: !nestedRegex def: \b(((((la|el)\s+)?mes\s+(({OfPrepositionRegex})\s+)?)|((pr[oó]xim[oa]?|est[ea]|[uú]ltim[oa]?)\s+))?({MonthRegex})|((el\s+)?{RelativeRegex}\s+)?(({SpecialYearPrefixes}\s+)año|año\s+{SpecialYearPrefixes})|(((la|el)\s+)?((({RelativeRegex}\s+)({DateUnitRegex}|(fin\s+de\s+)?semana|finde)(\s+{RelativeSuffixRegex})?)|{DateUnitRegex}(\s+{RelativeSuffixRegex}))|va\s+de\s+{DateUnitRegex}|((año|mes)(\s+(a|hasta)\s+la\s+fecha)?|((el\s+)?fin\s+de\s+)?semana|(el\s+)?finde))\b) references: [MonthRegex, RelativeRegex, OfPrepositionRegex, RelativeSuffixRegex, DateUnitRegex, SpecialYearPrefixes] MonthWithYearRegex: !nestedRegex - def: \b((((pr[oó]xim[oa](s)?|est?[ae]|[uú]ltim[oa]?)\s+)?{MonthRegex}|((el\s+)?(?primero?|1(er|ro)|segundo|2do|tercero?|3(er|ro)|uarto|4to|quinto|5to|sexto|6to|s[eé]ptimo|7mo|octavo|8vo|noveno|9no|d[eé]cimo|10mo|und[eé]cimo|11mo|duod[eé]cimo|12mo|[uú]ltimo)\s+mes(?=\s+(del?|en))))((\s+|(\s*[,-]\s*))((de(l|\s+la)?|en)\s+)?({YearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|este)\s+año)|\s+(del?|en)\s+\'?{TwoDigitYearRegex}))\b + def: \b((((pr[oó]xim[oa](s)?|est?[ae]|[uú]ltim[oa]?)\s+)?{MonthRegex}|((el\s+)?(?primero?|1(er|ro)|segundo|2do|tercero?|3(er|ro)|uarto|4to|quinto|5to|sexto|6to|s[eé]ptimo|7mo|octavo|8vo|noveno|9no|d[eé]cimo|10mo|und[eé]cimo|11mo|duod[eé]cimo|12mo|[uú]ltimo)\s+mes(?=\s+(del?|en))))((\s+|(\s*[,-]\s*))((de(l|\s+la)?|en)\s+)?({YearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|este)\s+año)|\s+(del?|en)\s+{TwoDigitYearRegex}))\b references: [ MonthRegex, YearRegex, TwoDigitYearRegex ] MonthNumWithYearRegex: !nestedRegex def: \b(({YearRegex}(\s*?)[/\-\.~](\s*?){MonthNumRegex})|({MonthNumRegex}(\s*?)[/\-\.~](\s*?){YearRegex}))\b @@ -237,7 +237,7 @@ WeekDayEnd: !nestedRegex WeekDayStart: !simpleRegex def: ^\b$ DateYearRegex: !nestedRegex - def: (?{YearRegex}|(?{YearRegex}|(?first|1st|second|2nd|third|3rd|fourth|4th|fifth|5th|sixth|6th|seventh|7th|eighth|8th|ninth|9th|tenth|10th|eleventh|11th|twelfth|12th|last)\\s+month(?=\\s+(of|in))))((\\s*)[/\\\\\\-\\.,]?(\\s+(of|in))?(\\s*)({YearRegex}|\\\'?{TwoDigitYearRegex}|(?following|next|last|this)\\s+year)|\\s+(of|in)\\s+{TwoDigitYearRegex}))|(({YearRegex}|(?following|next|last|this)\\s+year)(\\s*),?(\\s*){WrittenMonthRegex}))\\b' + MonthWithYear = f'\\b((({WrittenMonthRegex}[\\.]?|((the\\s+)?(?first|1st|second|2nd|third|3rd|fourth|4th|fifth|5th|sixth|6th|seventh|7th|eighth|8th|ninth|9th|tenth|10th|eleventh|11th|twelfth|12th|last)\\s+month(?=\\s+(of|in))))((\\s*)[/\\\\\\-\\.,]?(\\s+(of|in))?(\\s*)({YearRegex}|{TwoDigitYearRegex}|(?following|next|last|this)\\s+year)|\\s+(of|in)\\s+{TwoDigitYearRegex}))|(({YearRegex}|(?following|next|last|this)\\s+year)(\\s*),?(\\s*){WrittenMonthRegex}))\\b' SpecialYearPrefixes = f'(calendar|(?fiscal|school))' OneWordPeriodRegex = f'\\b((((the\\s+)?month of\\s+)?({StrictRelativeRegex}\\s+)?{MonthRegex})|(month|year) to date|(?((un)?till?|to)\\s+date)|({RelativeRegex}\\s+)?(my\\s+)?((?working\\s+week|workweek)|week(end)?|month|fortnight|(({SpecialYearPrefixes}\\s+)?year))(?!((\\s+of)?\\s+\\d+(?!({BaseDateTime.BaseAmDescRegex}|{BaseDateTime.BasePmDescRegex}))|\\s+to\\s+date))(\\s+{AfterNextSuffixRegex})?)\\b' MonthNumWithYear = f'\\b(({BaseDateTime.FourDigitYearRegex}(\\s*)[/\\-\\.](\\s*){MonthNumRegex})|({MonthNumRegex}(\\s*)[/\\-](\\s*){BaseDateTime.FourDigitYearRegex}))\\b' @@ -109,7 +109,7 @@ class EnglishDateTime: WhichWeekRegex = f'\\b(week)(\\s*)(?5[0-3]|[1-4]\\d|0?[1-9])(\\s+of\\s+({YearRegex}|{RelativeRegex}\\s+year))?\\b' WeekOfRegex = f'(the\\s+)?((week)(\\s+(of|(commencing|starting|beginning)(\\s+on)?))|w/c)(\\s+the)?' MonthOfRegex = f'(month)(\\s*)(of)' - DateYearRegex = f'(?{BaseDateTime.FourDigitYearRegex}|(?{BaseDateTime.FourDigitYearRegex}|(?(3[0-1]|[0-2]?\\d)(?:th|nd|rd|st))s?)\\b' diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py index 39c47e224a..f7ab2cf049 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/french_date_time.py @@ -52,7 +52,7 @@ class FrenchDateTime: MonthFrontBetweenRegex = f'\\b{MonthSuffixRegex}\\s+(entre|d[ue]\\s+)({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})((\\s+|\\s*,\\s*){YearRegex})?\\b' BetweenRegex = f'\\b(entre\\s+)({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})\\s+{MonthSuffixRegex}((\\s+|\\s*,\\s*){YearRegex})?\\b' YearWordRegex = f'\\b(?l\'ann[ée]e)\\b' - MonthWithYear = f'\\b({WrittenMonthRegex}(\\s*),?(\\s+de)?(\\s*)({YearRegex}|\\\'?{TwoDigitYearRegex}|(?cette)\\s*{YearWordRegex})|{YearWordRegex}\\s*({PastSuffixRegex}|{NextSuffixRegex}))' + MonthWithYear = f'\\b({WrittenMonthRegex}(\\s*),?(\\s+de)?(\\s*)({YearRegex}|{TwoDigitYearRegex}|(?cette)\\s*{YearWordRegex})|{YearWordRegex}\\s*({PastSuffixRegex}|{NextSuffixRegex}))' OneWordPeriodRegex = f'\\b(({RelativeRegex}\\s+)?{WrittenMonthRegex}|(la\\s+)?(weekend|(fin de )?semaine|week-end|mois|ans?|l\'année)\\s+{StrictRelativeRegex}|{RelativeRegex}\\s+(weekend|(fin de )?semaine|week-end|mois|ans?|l\'année)|weekend|week-end|mois|l\'année|an)\\b' MonthNumWithYear = f'({YearRegex}(\\s*)[/\\-\\.](\\s*){MonthNumRegex})|({MonthNumRegex}(\\s*)[/\\-](\\s*){YearRegex})' WeekOfMonthRegex = f'(?(le\\s+)?(?premier|1er|duexi[èe]me|2|troisi[èe]me|3|quatri[èe]me|4|cinqi[èe]me|5)\\s+semaine(\\s+de)?\\s+{MonthSuffixRegex})' @@ -85,7 +85,7 @@ class FrenchDateTime: AmbiguousRangeModifierPrefix = f'^\\b$' NumberEndingPattern = f'^\\b$' SpecialDate = f'(?<=\\b(au|le)\\s+){DayRegex}(?!:)\\b' - DateYearRegex = f'(?{YearRegex}|\\\'?{TwoDigitYearRegex})' + DateYearRegex = f'(?{YearRegex}|{TwoDigitYearRegex})' DateExtractor1 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?{MonthRegex}\\s*[/\\\\\\.\\-]?\\s*{DayRegex}(\\s*([/\\\\\\.\\-]|\\bde\\b)?\\s*{BaseDateTime.FourDigitYearRegex})?\\b' DateExtractor2 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?{DayRegex}(\\s+|\\s*,\\s*|\\s+){MonthRegex}\\s*([\\.\\-]|\\bde\\b)?\\s*{DateYearRegex}\\b' DateExtractor3 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?((?apr(il|\\.)|aug(ust|\\.)|dez(ember|\\.)|feb(ruar|ber|\\.)|januar|j[äa]n(ner|\\.)|jul(e?i|l\\.)|jun([io]|\\.)|märz|mai|nov(ember|\\.)|okt(ober|\\.)|sept?(ember|\\.))(\\s*),?(\\s+des)?(\\s*)({YearRegex}|\\\'?{TwoDigitYearRegex}|(?nächste[mn]|letzte[mn]|diese(s|n))\\s+jahres))' + MonthWithYear = f'\\b((?apr(il|\\.)|aug(ust|\\.)|dez(ember|\\.)|feb(ruar|ber|\\.)|januar|j[äa]n(ner|\\.)|jul(e?i|l\\.)|jun([io]|\\.)|märz|mai|nov(ember|\\.)|okt(ober|\\.)|sept?(ember|\\.))(\\s*),?(\\s+des)?(\\s*)({YearRegex}|{TwoDigitYearRegex}|(?nächste[mn]|letzte[mn]|diese(s|n))\\s+jahres))' OneWordPeriodRegex = f'\\b((((im\\s+)?monat\\s+)?({RelativeRegex}\\s*(jahr\\s*(im\\s*)?)?)?(?apr(il|\\.)|aug(ust|\\.)|dez(ember|\\.)|feb(ruar|ber|\\.)|j[äa]n(uar|ner|\\.)|jul(e?i|l\\.)|jun([io]|\\.)|märz|mai|nov(ember|\\.)|okt(ober|\\.)|sept?(ember|\\.)))|(?unter\\s+der\\s+woche)|({RelativeRegex}\\s+)?((?werktags|arbeitswoche)|woche(nende)?|monat(s)?|jahr|jahres)(?!(\\s+\\d+(?!({BaseDateTime.BaseAmDescRegex}|{BaseDateTime.BasePmDescRegex}))|\\s+bis\\s+heute)))\\b' MonthNumWithYear = f'({YearRegex}(\\s*)[/\\-\\.](\\s*){MonthNumRegex})|({MonthNumRegex}(\\s*)[/\\-\\.](\\s*){YearRegex})' WeekOfMonthRegex = f'(?((die|der)\\s+)(?erste[rns]?|1\\.|zweite[rns]?|2\\.|dritte[rns]?|3\\.|vierte[rns]?|4\\.|fünfte[rns]?|5\\.|letzte[rmns]?)\\s+woche\\s+(des|diese(s|n)|im)\\s+({MonthSuffixRegex}|monat(s)?))' @@ -78,7 +78,7 @@ class GermanDateTime: WeekOfRegex = f'(die\\s+)?(woche)(\\s+des)' MonthOfRegex = f'(monat)(\\s*)(des)' MonthRegex = f'(?apr((il)?\\b|\\.)|aug((ust)?\\b|\\.)|dez((ember)?\\b|\\.)|feb((ruar|ber)?\\b|\\.)|januar|j[äa]n((ner)?\\b|\\.)|jul((e?i|l)?\\b|l\\.)|jun([io]?\\b|\\.)|märz|mai|nov((ember)?\\b|\\.)|okt((ober)?\\b|\\.)|sept?((ember)?\\b|\\.))' - DateYearRegex = f'(?{BaseDateTime.FourDigitYearRegex}|\\\'?{TwoDigitYearRegex})' + DateYearRegex = f'(?{BaseDateTime.FourDigitYearRegex}|{TwoDigitYearRegex})' OnRegex = f'(?<=\\bam\\s+)({DayRegex}s?)\\b' RelaxedOnRegex = f'(?<=\\b(am|an dem)\\s+)((?10|11|12|13|14|15|16|17|18|19|1|20|21|22|23|24|25|26|27|28|29|2|30|31|3|4|5|6|7|8|9)([\\.]))' ThisRegex = f'(((diese((n|m)|(\\s*woche))(\\s*am)?\\s+){WeekDayRegex})|diese(n|r)?\\s*(sommer|winter|frühling|herbst))' diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/italian_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/italian_date_time.py index 8b315f8454..0e7543fb8a 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/italian_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/italian_date_time.py @@ -58,7 +58,7 @@ class ItalianDateTime: LastTwoYearNumRegex = f'({WrittenOneToNineRegex}|{WrittenElevenToNineteenRegex}|{WrittenTensRegex}({WrittenOneToNineRegex})?)' FullTextYearRegex = f'\\b((?{WrittenCenturyFullYearRegex})(?{LastTwoYearNumRegex})?)\\b' TwoDigitYearRegex = f'\\b(?([0-9]\\d))(?!(\\s*((\\:\\d)|{AmDescRegex}|{PmDescRegex}|\\.\\d)))\\b' - DateYearRegex = f'(?{BaseDateTime.FourDigitYearRegex}|\\\'?{TwoDigitYearRegex})' + DateYearRegex = f'(?{BaseDateTime.FourDigitYearRegex}|{TwoDigitYearRegex})' YearSuffix = f'(,?\\s*({DateYearRegex}|{FullTextYearRegex}))' YearRegex = f'({BaseDateTime.FourDigitYearRegex}|{FullTextYearRegex})' DateUnitRegex = f'\\b(?decennio|mese|settimana|(ann|giorn)(o|(?i))|(?decenni|mesi|settimane))\\b' @@ -67,7 +67,7 @@ class ItalianDateTime: MonthFrontBetweenRegex = f'\\b{MonthSuffixRegex}\\s+([tf]ra\\s+)({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})((\\s+|\\s*,\\s*){YearRegex})?\\b' BetweenRegex = f'\\b([tf]ra\\s+)({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})\\s+{MonthSuffixRegex}((\\s+|\\s*,\\s*){YearRegex})?\\b' YearWordRegex = f'\\b(?l\'anno)\\b' - MonthWithYear = f'\\b({MonthRegex}(\\.)?(\\s*)[/\\\\\\-\\.,]?(((\\s+del)?\\s+{YearRegex}|\\\'?{TwoDigitYearRegex})|((\\s+(del|di|il))?\\s+(?prossim[\'o]|passato|quest[\'o])\\s*anno)|((\\s+(del)?l\')anno\\s+(?prossimo|passato))))' + MonthWithYear = f'\\b({MonthRegex}(\\.)?(\\s*)[/\\\\\\-\\.,]?(((\\s+del)?\\s+{YearRegex}|{TwoDigitYearRegex})|((\\s+(del|di|il))?\\s+(?prossim[\'o]|passato|quest[\'o])\\s*anno)|((\\s+(del)?l\')anno\\s+(?prossimo|passato))))' SpecialYearPrefixes = f'(?fiscale|scolastico)' OneWordPeriodRegex = f'\\b((((il|l[o\'])\\s*)?((mese di\\s+)|({RelativeRegex}\\s*))?{MonthRegex}(\\s+{RelativeRegex})?)|dall\'inizio\\s+del(l\')\\s*(mese|anno)|({RelativeRegex}\\s*)?(mi[ao]\\s+)?(weekend|finesettimana|settimana|mese|anno)(\\s+{RelativeRegex})?(?!((\\s+di|del)?\\s+\\d+))(\\s+{AfterNextSuffixRegex})?)\\b' MonthNumWithYear = f'({YearRegex}[/\\-\\.]{MonthNumRegex})|({MonthNumRegex}[/\\-]{YearRegex})' diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py index 636dd85100..af82fa705a 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/portuguese_date_time.py @@ -49,7 +49,7 @@ class PortugueseDateTime: DayBetweenRegex = f'\\b((entre|entre\\s+[oa]s?)\\s+)(dia\\s+)?({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})\\s+{MonthSuffixRegex}((\\s+|\\s*,\\s*){YearRegex})?\\b' SpecialYearPrefixes = f'((do\\s+)?calend[aá]rio|civil|(?fiscal|escolar|letivo))' OneWordPeriodRegex = f'\\b(((pr[oó]xim[oa]?|[nd]?es[st]e|aquel[ea]|[uú]ltim[oa]?|em)\\s+)?(?abr(il)?|ago(sto)?|dez(embro)?|fev(ereiro)?|jan(eiro)?|ju[ln](ho)?|mar([çc]o)?|maio?|nov(embro)?|out(ubro)?|sep?t(embro)?)|({RelativeRegex}\\s+)?(ano\\s+{SpecialYearPrefixes}|{SpecialYearPrefixes}\\s+ano)|(?<=\\b(de|do|da|o|a)\\s+)?(pr[oó]xim[oa](s)?|[uú]ltim[oa]s?|est(e|a))\\s+(fim de semana|fins de semana|semana|m[êe]s|ano)|fim de semana|fins de semana|(m[êe]s|anos)? [àa] data)\\b' - MonthWithYearRegex = f'\\b((((pr[oó]xim[oa](s)?|[nd]?es[st]e|aquele|[uú]ltim[oa]?|em)\\s+)?{MonthRegex}|((n?o\\s+)?(?primeiro|1o|segundo|2o|terceiro|3o|[cq]uarto|4o|quinto|5o|sexto|6o|s[eé]timo|7o|oitavo|8o|nono|9o|d[eé]cimo(\\s+(primeiro|segundo))?|10o|11o|12o|[uú]ltimo)\\s+m[eê]s(?=\\s+(d[aeo]|[ao]))))\\s+((d[aeo]|[ao])\\s+)?({YearRegex}|\\\'?{TwoDigitYearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|[nd]?es[st]e)\\s+ano))\\b' + MonthWithYearRegex = f'\\b((((pr[oó]xim[oa](s)?|[nd]?es[st]e|aquele|[uú]ltim[oa]?|em)\\s+)?{MonthRegex}|((n?o\\s+)?(?primeiro|1o|segundo|2o|terceiro|3o|[cq]uarto|4o|quinto|5o|sexto|6o|s[eé]timo|7o|oitavo|8o|nono|9o|d[eé]cimo(\\s+(primeiro|segundo))?|10o|11o|12o|[uú]ltimo)\\s+m[eê]s(?=\\s+(d[aeo]|[ao]))))\\s+((d[aeo]|[ao])\\s+)?({YearRegex}|{TwoDigitYearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|[nd]?es[st]e)\\s+ano))\\b' MonthNumWithYearRegex = f'({YearRegex}(\\s*?)[/\\-\\.](\\s*?){MonthNumRegex})|({MonthNumRegex}(\\s*?)[/\\-](\\s*?){YearRegex})' WeekOfMonthRegex = f'(?(a|na\\s+)?(?primeira?|1a|segunda|2a|terceira|3a|[qc]uarta|4a|quinta|5a|[uú]ltima)\\s+semana\\s+{MonthSuffixRegex})' WeekOfYearRegex = f'(?(a|na\\s+)?(?primeira?|1a|segunda|2a|terceira|3a|[qc]uarta|4a|quinta|5a|[uú]ltima?)\\s+semana(\\s+d[oe]?)?\\s+({YearRegex}|(?pr[oó]ximo|[uú]ltimo|[nd]?es[st]e)\\s+ano))' @@ -97,7 +97,7 @@ class PortugueseDateTime: MonthEndRegex = f'({MonthRegex}\\s*(o)?\\s*$)' WeekDayEnd = f'{WeekDayRegex}\\s*,?\\s*$' WeekDayStart = f'^\\b$' - DateYearRegex = f'(?{YearRegex}|\\\'?{TwoDigitYearRegex})' + DateYearRegex = f'(?{YearRegex}|{TwoDigitYearRegex})' DateExtractor1 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?{DayRegex}((\\s*(de)|[/\\\\\\.\\- ])\\s*)?{MonthRegex}\\b' DateExtractor2 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?({DayRegex}(\\s*([/\\.\\-]|de)?\\s*{MonthRegex}|\\s+de\\s+{MonthNumRegex})(\\s*([,./-]|de|\\s+)\\s*){DateYearRegex}|{BaseDateTime.FourDigitYearRegex}\\s*[/\\.\\- ]\\s*{DayRegex}\\s*[/\\.\\- ]\\s*{MonthRegex})\\b' DateExtractor3 = f'\\b({WeekDayRegex}(\\s+|\\s*,\\s*))?{MonthRegex}(\\s*[/\\.\\- ]\\s*|\\s+de\\s+){DayRegex}(?!\\s*\\-\\s*\\d{{2}}\\b)((\\s*[/\\.\\- ]\\s*|\\s+de\\s+){DateYearRegex})?\\b' diff --git a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py index 20a1d3dde9..77cda13a91 100644 --- a/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py +++ b/Python/libraries/recognizers-date-time/recognizers_date_time/resources/spanish_date_time.py @@ -53,7 +53,7 @@ class SpanishDateTime: DayBetweenRegex = f'\\b((entre(\\s+el)?)\\s+)({DayRegex})\\s*{RangeConnectorRegex}\\s*({DayRegex})\\s+{MonthSuffixRegex}((\\s+|\\s*,\\s*)((en|del?)\\s+)?{YearRegex})?\\b' SpecialYearPrefixes = f'((del\\s+)?calend[aá]rio|(?fiscal|escolar))' OneWordPeriodRegex = f'\\b(((((la|el)\\s+)?mes\\s+(({OfPrepositionRegex})\\s+)?)|((pr[oó]xim[oa]?|est[ea]|[uú]ltim[oa]?)\\s+))?({MonthRegex})|((el\\s+)?{RelativeRegex}\\s+)?(({SpecialYearPrefixes}\\s+)año|año\\s+{SpecialYearPrefixes})|(((la|el)\\s+)?((({RelativeRegex}\\s+)({DateUnitRegex}|(fin\\s+de\\s+)?semana|finde)(\\s+{RelativeSuffixRegex})?)|{DateUnitRegex}(\\s+{RelativeSuffixRegex}))|va\\s+de\\s+{DateUnitRegex}|((año|mes)(\\s+(a|hasta)\\s+la\\s+fecha)?|((el\\s+)?fin\\s+de\\s+)?semana|(el\\s+)?finde))\\b)' - MonthWithYearRegex = f'\\b((((pr[oó]xim[oa](s)?|est?[ae]|[uú]ltim[oa]?)\\s+)?{MonthRegex}|((el\\s+)?(?primero?|1(er|ro)|segundo|2do|tercero?|3(er|ro)|uarto|4to|quinto|5to|sexto|6to|s[eé]ptimo|7mo|octavo|8vo|noveno|9no|d[eé]cimo|10mo|und[eé]cimo|11mo|duod[eé]cimo|12mo|[uú]ltimo)\\s+mes(?=\\s+(del?|en))))((\\s+|(\\s*[,-]\\s*))((de(l|\\s+la)?|en)\\s+)?({YearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|este)\\s+año)|\\s+(del?|en)\\s+\\\'?{TwoDigitYearRegex}))\\b' + MonthWithYearRegex = f'\\b((((pr[oó]xim[oa](s)?|est?[ae]|[uú]ltim[oa]?)\\s+)?{MonthRegex}|((el\\s+)?(?primero?|1(er|ro)|segundo|2do|tercero?|3(er|ro)|uarto|4to|quinto|5to|sexto|6to|s[eé]ptimo|7mo|octavo|8vo|noveno|9no|d[eé]cimo|10mo|und[eé]cimo|11mo|duod[eé]cimo|12mo|[uú]ltimo)\\s+mes(?=\\s+(del?|en))))((\\s+|(\\s*[,-]\\s*))((de(l|\\s+la)?|en)\\s+)?({YearRegex}|(?pr[oó]ximo(s)?|[uú]ltimo?|este)\\s+año)|\\s+(del?|en)\\s+{TwoDigitYearRegex}))\\b' MonthNumWithYearRegex = f'\\b(({YearRegex}(\\s*?)[/\\-\\.~](\\s*?){MonthNumRegex})|({MonthNumRegex}(\\s*?)[/\\-\\.~](\\s*?){YearRegex}))\\b' WeekOfMonthRegex = f'(?(la\\s+)?(?primera?|1ra|segunda|2da|tercera?|3ra|cuarta|4ta|quinta|5ta|([12345](\\.)?ª)|[uú]ltima)\\s+semana\\s+{MonthSuffixRegex}((\\s+de)?\\s+({BaseDateTime.FourDigitYearRegex}|{RelativeRegex}\\s+año))?)\\b' WeekOfYearRegex = f'(?(la\\s+)?(?primera?|1ra|segunda|2da|tercera?|3ra|cuarta|4ta|quinta|5ta|[uú]ltima?|([12345]ª))\\s+semana(\\s+(del?|en))?\\s+({YearRegex}|(?pr[oó]ximo|[uú]ltimo|este)\\s+año))' @@ -108,7 +108,7 @@ class SpanishDateTime: MonthEndRegex = f'({MonthRegex}\\s*(el)?\\s*$)' WeekDayEnd = f'{WeekDayRegex}\\s*,?\\s*$' WeekDayStart = f'^\\b$' - DateYearRegex = f'(?{YearRegex}|(?{YearRegex}|(?