Skip to content

Commit

Permalink
[EN DateTimeV2] Adding specs to document supported cases mentioned in…
Browse files Browse the repository at this point in the history
… recent issues (#2825)

* Adding specs to document supported cases mentioned in recent issues

 * Re-gen resources across platforms.
  • Loading branch information
tellarin committed Jan 7, 2022
1 parent f311d59 commit 141d3f2
Show file tree
Hide file tree
Showing 32 changed files with 493 additions and 78 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -884,7 +884,7 @@ public class EnglishDateTime {

public static final String FlexibleDayRegex = "(?<DayOfMonth>([A-Za-z]+\\s)?[A-Za-z\\d]+)";

public static final String ForTheRegex = "\\b((((?<=for\\s+)the\\s+{FlexibleDayRegex})|((?<=on\\s+)(the\\s+)?{FlexibleDayRegex}(?<=(st|nd|rd|th))))(?<end>\\s*(,|\\.(?!\\d)|!|\\?|$)))"
public static final String ForTheRegex = "\\b((((?<=\\bfor\\s+)the\\s+{FlexibleDayRegex})|((?<=\\bon\\s+)(the\\s+)?{FlexibleDayRegex}(?<=(st|nd|rd|th))))(?<end>\\s*(,|\\.(?!\\d)|!|\\?|$)))"
.replace("{FlexibleDayRegex}", FlexibleDayRegex);

public static final String WeekDayAndDayOfMonthRegex = "\\b{WeekDayRegex}\\s+(the\\s+{FlexibleDayRegex})\\b"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ public class FrenchDateTime {

public static final Boolean CheckBothBeforeAfter = false;

public static final String TillRegex = "(?<till>au|et|(jusqu')?[aà]|avant|--|-|—|——)";
public static final String TillRegex = "(?<till>\\b(au|et|(jusqu')?a|avant)\\b|(jusqu')?à|--|-|—|——)";

public static final String RangeConnectorRegex = "(?<and>de la|au|[aà]|et(\\s*la)?|--|-|—|——)";
public static final String RangeConnectorRegex = "(?<and>\\b(de\\s+la|au|(jusqu')?a|et(\\s*la)?)\\b|(jusqu')?à|--|-|—|——)";

public static final String RelativeRegex = "(?<order>prochaine?|de|du|ce(tte)?|l[ae]|derni[eè]re|hier|pr[eé]c[eé]dente|au\\s+cours+(de|du\\s*))";

Expand Down Expand Up @@ -147,7 +147,7 @@ public class FrenchDateTime {
.replace("{PastSuffixRegex}", PastSuffixRegex)
.replace("{NextSuffixRegex}", NextSuffixRegex);

public static final String OneWordPeriodRegex = "\\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))\\b"
public static final String OneWordPeriodRegex = "\\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"
.replace("{WrittenMonthRegex}", WrittenMonthRegex)
.replace("{RelativeRegex}", RelativeRegex)
.replace("{StrictRelativeRegex}", StrictRelativeRegex);
Expand Down Expand Up @@ -703,7 +703,7 @@ public class FrenchDateTime {

public static final String SingleAmbiguousMonthRegex = "^(le\\s+)?(may|march)$";

public static final String UnspecificDatePeriodRegex = "^\\b$";
public static final String UnspecificDatePeriodRegex = "^(semaine|mois|an(n[eé]e)?)$";

public static final String PrepositionSuffixRegex = "\\b(du|de|[àa]|vers|dans)$";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ public class PortugueseDateTime {
.replace("{MiddayRegex}", MiddayRegex)
.replace("{MidEarlyMorning}", MidEarlyMorning);

public static final String AtRegex = "\\b(((?<=\\b([aà]s?)\\s+)({WrittenTimeRegex}|{HourNumRegex}|{BaseDateTime.HourRegex})(\\s+horas?|\\s*h\\b)?|(?<=\\b(s(er)?[aã]o|v[aã]o\\s+ser|^[eé]h?)\\s+)({WrittenTimeRegex}|{HourNumRegex}|{BaseDateTime.HourRegex})(\\s+horas?|\\s*h\\b))(\\s+{OclockRegex})?|{MidTimeRegex})\\b"
public static final String AtRegex = "\\b(((?<=\\b([aà]s?)\\s+)({WrittenTimeRegex}|{HourNumRegex}|{BaseDateTime.HourRegex})(\\s+horas?|\\s*h\\b)?|(?<=\\b(s(er)?[aã]o|v[aã]o\\s+ser|^[eé]h?)\\s+|^\\s*)({WrittenTimeRegex}|{HourNumRegex}|{BaseDateTime.HourRegex})(\\s+horas?|\\s*h\\b))(\\s+{OclockRegex})?|{MidTimeRegex})\\b"
.replace("{HourNumRegex}", HourNumRegex)
.replace("{BaseDateTime.HourRegex}", BaseDateTime.HourRegex)
.replace("{WrittenTimeRegex}", WrittenTimeRegex)
Expand Down Expand Up @@ -1042,6 +1042,10 @@ public class PortugueseDateTime {
.put("^(abr|ago|dez|fev|jan|ju[ln]|mar|maio?|nov|out|sep?t)$", "([$%£&!?@#])(abr|ago|dez|fev|jan|ju[ln]|mar|maio?|nov|out|sep?t)|(abr|ago|dez|fev|jan|ju[ln]|mar|maio?|nov|out|sep?t)([$%£&@#])")
.build();

public static final ImmutableMap<String, String> AmbiguityTimeFiltersDict = ImmutableMap.<String, String>builder()
.put("horas?$", "\\b((por|duração\\s+de|durante)\\s+(\\S+\\s+){1,2}horas?|horas?\\s+(\\S+\\s+){0,2}dur(ação|ou|a(rá|va)?))\\b")
.build();

public static final List<String> EarlyMorningTermList = Arrays.asList("madrugada");

public static final List<String> MorningTermList = Arrays.asList("manha", "manhã");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ public static String DoubleRegexDefinition(String placeholder, String thousandsm
.replace("{decimalmark}", decimalmark);
}

public static final String PlaceHolderDefault = "\\D|\\b";
public static final String PlaceHolderDefault = "(?=\\D)|\\b";

public static final String PlaceHolderMixed = "\\D|\\b";

public static final String CaseSensitiveTerms = "(?<=(\\s|\\d))(kB|K[Bb]?|M[BbM]?|G[Bb]?|B)\\b";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,20 +127,28 @@ public static String NumbersWithPlaceHolder(String placeholder) {
public static final String FractionNotationRegex = "{BaseNumbers.FractionNotationRegex}"
.replace("{BaseNumbers.FractionNotationRegex}", BaseNumbers.FractionNotationRegex);

public static final String RoundMultiplierRegex = "\\b\\s*((of\\s+)?a\\s+)?(?<multiplier>{RoundNumberIntegerRegex})$"
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);
public static final String FractionMultiplierRegex = "(?<fracMultiplier>\\s+and\\s+(a|one|{TwoToNineIntegerRegex})\\s+(half|quarter|third|fourth|fifth|sixth|seventh|eighth|nine?th|tenth)s?)"
.replace("{TwoToNineIntegerRegex}", TwoToNineIntegerRegex);

public static final String RoundMultiplierWithFraction = "(?<=(?<!{RoundNumberIntegerRegex}){FractionMultiplierRegex}\\s+)?(?<multiplier>(?:million|mln|billion|bln|trillion|tln)s?)(?={FractionMultiplierRegex}?$)"
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex)
.replace("{FractionMultiplierRegex}", FractionMultiplierRegex);

public static final String RoundMultiplierRegex = "\\b\\s*((of\\s+)?a\\s+)?({RoundMultiplierWithFraction}|(?<multiplier>(?:hundred|thousand|lakh|crore)s?)$)"
.replace("{RoundMultiplierWithFraction}", RoundMultiplierWithFraction);

public static final String FractionNounRegex = "(?<=\\b)({AllIntRegex}\\s+(and\\s+)?)?(({AllIntRegex})(\\s+|\\s*-\\s*)((({AllOrdinalRegex})|({RoundNumberOrdinalRegex}))s|halves|quarters)((\\s+of\\s+a)?\\s+{RoundNumberIntegerRegex})?|(half(\\s+a)?|quarter(\\s+of\\s+a)?)\\s+{RoundNumberIntegerRegex})(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{RoundNumberOrdinalRegex}", RoundNumberOrdinalRegex)
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);

public static final String FractionNounWithArticleRegex = "(?<=\\b)((({AllIntRegex}\\s+(and\\s+)?)?(an?|one)(\\s+|\\s*-\\s*)(?!\\bfirst\\b|\\bsecond\\b)(({AllOrdinalRegex})|({RoundNumberOrdinalRegex})|(half|quarter)(((\\s+of)?\\s+a)?\\s+{RoundNumberIntegerRegex})?))|(half))(?=\\b)"
public static final String FractionNounWithArticleRegex = "(?<=\\b)(((({AllIntRegex}|{RoundNumberIntegerRegexWithLocks})\\s+(and\\s+)?)?(an?|one)(\\s+|\\s*-\\s*)(?!\\bfirst\\b|\\bsecond\\b)(({AllOrdinalRegex})|({RoundNumberOrdinalRegex})|(half|quarter)(((\\s+of)?\\s+a)?\\s+{RoundNumberIntegerRegex})?))|(half))(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{RoundNumberOrdinalRegex}", RoundNumberOrdinalRegex)
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex)
.replace("{RoundNumberIntegerRegexWithLocks}", RoundNumberIntegerRegexWithLocks);

public static final String FractionPrepositionRegex = "(?<!{BaseNumbers.CommonCurrencySymbol}\\s*)(?<=\\b)(?<numerator>({AllIntRegex})|((?<![\\.,])\\d+))\\s+(over|(?<ambiguousSeparator>in|out\\s+of))\\s+(?<denominator>({AllIntRegex})|(\\d+)(?![\\.,]))(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
Expand Down Expand Up @@ -369,6 +377,13 @@ public static String DoubleWithoutIntegralRegex(String placeholder) {
.put("tln", 1000000000000L)
.put("lakh", 100000L)
.put("crore", 10000000L)
.put("hundreds", 100L)
.put("thousands", 1000L)
.put("millions", 1000000L)
.put("billions", 1000000000L)
.put("trillions", 1000000000000L)
.put("lakhs", 100000L)
.put("crores", 10000000L)
.build();

public static final ImmutableMap<String, Long> OrdinalNumberMap = ImmutableMap.<String, Long>builder()
Expand Down Expand Up @@ -455,6 +470,13 @@ public static String DoubleWithoutIntegralRegex(String placeholder) {
.put("tln", 1000000000000L)
.put("lakh", 100000L)
.put("crore", 10000000L)
.put("hundreds", 100L)
.put("thousands", 1000L)
.put("millions", 1000000L)
.put("billions", 1000000000L)
.put("trillions", 1000000000000L)
.put("lakhs", 100000L)
.put("crores", 10000000L)
.put("hundredth", 100L)
.put("thousandth", 1000L)
.put("millionth", 1000000L)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ public class FrenchNumeric {

public static final String ZeroToNineIntegerRegex = "(une?|deux|trois|quatre|cinq|six|sept|huit|neuf|z[ée]ro)";

public static final String TwoToNineIntegerRegex = "(deux|trois|quatre|cinq|six|sept|huit|neuf)";

public static final String TenToNineteenIntegerRegex = "((seize|quinze|quatorze|treize|douze|onze)|dix(\\Wneuf|\\Whuit|\\Wsept)?)";

public static final String TensNumberIntegerRegex = "(quatre\\Wvingt(s|\\Wdix)?|soixante(\\Wdix)?|vingt|trente|quarante|cinquante|septante|octante|huitante|nonante)";
Expand Down Expand Up @@ -146,15 +148,26 @@ public static String NumbersWithPlaceHolder(String placeholder) {
public static final String FractionNotationRegex = "{BaseNumbers.FractionNotationRegex}"
.replace("{BaseNumbers.FractionNotationRegex}", BaseNumbers.FractionNotationRegex);

public static final String FractionNounRegex = "(?<=\\b)({AllIntRegex}\\s+((et)\\s+)?)?({AllIntRegex})(\\s+((et)\\s)?)((({AllOrdinalRegex})s?|({SuffixOrdinalRegex})s?)|demi[es]?|tiers?|quarts?)(?=\\b)"
public static final String FractionMultiplierRegex = "(?<fracMultiplier>\\s+et\\s+(demi[es]?|(une?|{TwoToNineIntegerRegex})\\s+(demie?|tier|quart|(cinqui|sixi|septi|hui[tr]i|neuvi|dixi)[eè]me)s?))"
.replace("{TwoToNineIntegerRegex}", TwoToNineIntegerRegex);

public static final String RoundMultiplierWithFraction = "(?<multiplier>(millions?|milliards?|billions?))(?={FractionMultiplierRegex}?$)"
.replace("{FractionMultiplierRegex}", FractionMultiplierRegex);

public static final String RoundMultiplierRegex = "\\b\\s*({RoundMultiplierWithFraction}|(?<multiplier>(cent|mille))$)"
.replace("{RoundMultiplierWithFraction}", RoundMultiplierWithFraction);

public static final String FractionNounRegex = "(?<=\\b)({AllIntRegex}\\s+((et)\\s+)?)?({AllIntRegex}(\\s+((et)\\s)?)(({AllOrdinalRegex}s?|{SuffixOrdinalRegex}s?)|(demi[es]?|tiers?|quarts?))|(un\\s+)?(demi|tier|quart)(\\s+(de\\s+)?|\\s*-\\s*){RoundNumberIntegerRegex})(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{SuffixOrdinalRegex}", SuffixOrdinalRegex);
.replace("{SuffixOrdinalRegex}", SuffixOrdinalRegex)
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);

public static final String FractionNounWithArticleRegex = "(?<=\\b)({AllIntRegex}\\s+(et\\s+)?)?(une?)(\\s+)(({AllOrdinalRegex})|({SuffixOrdinalRegex})|(et\\s+)?demi[es]?)(?=\\b)"
public static final String FractionNounWithArticleRegex = "(?<=\\b)(({AllIntRegex}|{RoundNumberIntegerRegexWithLocks})\\s+(et\\s+)?)?((une?)(\\s+)(({AllOrdinalRegex})|({SuffixOrdinalRegex})|(et\\s+)?demi[es]?)|demi[es]?)(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{SuffixOrdinalRegex}", SuffixOrdinalRegex);
.replace("{SuffixOrdinalRegex}", SuffixOrdinalRegex)
.replace("{RoundNumberIntegerRegexWithLocks}", RoundNumberIntegerRegexWithLocks);

public static final String FractionPrepositionRegex = "(?<!{BaseNumbers.CommonCurrencySymbol}\\s*)(?<=\\b)(?<numerator>({AllIntRegex})|((?<!\\.)\\d+))\\s+sur\\s+(?<denominator>({AllIntRegex})|((\\d+)(?!\\.)))(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
Expand Down Expand Up @@ -316,6 +329,8 @@ public static String DoubleWithoutIntegralRegex(String placeholder) {

public static final List<String> WrittenFractionSeparatorTexts = Arrays.asList("et", "sur");

public static final List<String> OneHalfTokens = Arrays.asList("un", "demi");

public static final String HalfADozenRegex = "(?<=\\b)demie?\\s+douzaine";

public static final String DigitalNumberRegex = "((?<=\\b)(cent|mille|millions?|milliards?|billions?|douzaines?)(?=\\b))|((?<=(\\d|\\b)){BaseNumbers.MultiplierLookupRegex}(?=\\b))"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ public class GermanNumeric {

public static final String ZeroToNineIntegerRegex = "(drei|sieben|acht|vier|fuenf|fünf|null|neun|eins|(ein(?!($|\\.|,|!|\\?)))|eine[rn]?|zwei|zwo|sechs)";

public static final String RoundNumberIntegerRegex = "((ein)?hundert|tausend|(\\s*(million(en)?|mio|milliarden?|mrd|billion(en)?)\\s*))";
public static final String TwoToNineIntegerRegex = "(drei|sieben|acht|vier|fuenf|fünf|neun|zwei|zwo|sechs)";

public static final String RoundNumberIntegerRegex = "((ein)?hundert|tausend|((million(en)?|mio|milliarden?|mrd|billion(en)?)))";

public static final String AnIntRegex = "(eine?)(?=\\s)";

Expand All @@ -47,7 +49,7 @@ public class GermanNumeric {
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex)
.replace("{AnIntRegex}", AnIntRegex);

public static final String AllIntRegex = "(((({TenToNineteenIntegerRegex}|({ZeroToNineIntegerRegex}und{TensNumberIntegerRegex})|{TensNumberIntegerRegex}|({ZeroToNineIntegerRegex}|{AnIntRegex}))?(\\s*{RoundNumberIntegerRegex})))*{SeparaIntRegex})"
public static final String AllIntRegex = "(((({TenToNineteenIntegerRegex}|({ZeroToNineIntegerRegex}und{TensNumberIntegerRegex})|{TensNumberIntegerRegex}|({ZeroToNineIntegerRegex}|{AnIntRegex}))?(\\s*{RoundNumberIntegerRegex}\\s*)))*{SeparaIntRegex})"
.replace("{TenToNineteenIntegerRegex}", TenToNineteenIntegerRegex)
.replace("{TensNumberIntegerRegex}", TensNumberIntegerRegex)
.replace("{ZeroToNineIntegerRegex}", ZeroToNineIntegerRegex)
Expand Down Expand Up @@ -121,17 +123,30 @@ public static String NumbersWithPlaceHolder(String placeholder) {

public static final List<String> OneHalfTokens = Arrays.asList("ein", "halb", "halbes");

public static final String FractionNounRegex = "(?<=\\b)(({AllIntRegex})(\\s*|\\s*-\\s*)((({AllOrdinalRegex})|({RoundNumberOrdinalRegex}))|halb(e[rs]?)?|hälfte)|{FractionUnitsRegex})(?=\\b)"
public static final String FractionMultiplierRegex = "(?<fracMultiplier>(\\s+und\\s+)?(anderthalb|einundhalb|dreiviertel)|(\\s+und\\s+)?(eine?|{TwoToNineIntegerRegex})\\s*(halbe?|(dritt|viert|fünft|fuenft|sechst|siebt|acht|neunt|zehnt)(er|es|en|el|e)?))"
.replace("{TwoToNineIntegerRegex}", TwoToNineIntegerRegex);

public static final String RoundMultiplierWithFraction = "(?<=(?<!{RoundNumberIntegerRegex}){FractionMultiplierRegex}\\s+)?(?<multiplier>(million(en)?|mio|milliarden?|mrd|billion(en)?))(?={FractionMultiplierRegex}?$)"
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex)
.replace("{FractionMultiplierRegex}", FractionMultiplierRegex);

public static final String RoundMultiplierRegex = "\\b\\s*((von\\s+)?ein(er|es|en|el|e)?\\s+)?({RoundMultiplierWithFraction}|(?<multiplier>(?:hundert|tausend))$)"
.replace("{RoundMultiplierWithFraction}", RoundMultiplierWithFraction);

public static final String FractionNounRegex = "(?<=\\b)({AllIntRegex}\\s+(und\\s+)?)?(({AllIntRegex})(\\s*|\\s*-\\s*)((({AllOrdinalRegex})|({RoundNumberOrdinalRegex}))|halb(e[rs]?)?|hälfte)(\\s+{RoundNumberIntegerRegex})?|(eine\\s+(halbe|viertel)\\s+){RoundNumberIntegerRegex}|{FractionUnitsRegex}(\\s+{RoundNumberIntegerRegex})?)(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{RoundNumberOrdinalRegex}", RoundNumberOrdinalRegex)
.replace("{FractionUnitsRegex}", FractionUnitsRegex);
.replace("{FractionUnitsRegex}", FractionUnitsRegex)
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);

public static final String FractionNounWithArticleRegex = "(?<=\\b)(({AllIntRegex}\\s+(und\\s+)?)?eine?(\\s+|\\s*-\\s*)({AllOrdinalRegex}|{RoundNumberOrdinalRegex}|{FractionUnitsRegex}|({AllIntRegex}ein)?(halb(e[rs]?)?|hälfte))|{AllIntRegex}ein(halb))(?=\\b)"
public static final String FractionNounWithArticleRegex = "(?<=\\b)((({AllIntRegex}|{RoundNumberIntegerRegexWithLocks})\\s+(und\\s+)?)?eine?(\\s+|\\s*-\\s*)({AllOrdinalRegex}|{RoundNumberOrdinalRegex}|{FractionUnitsRegex}|({AllIntRegex}ein)?(halb(e[rs]?)?|hälfte))|{AllIntRegex}ein(halb)(\\s+{RoundNumberIntegerRegex})?)(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
.replace("{AllOrdinalRegex}", AllOrdinalRegex)
.replace("{RoundNumberOrdinalRegex}", RoundNumberOrdinalRegex)
.replace("{FractionUnitsRegex}", FractionUnitsRegex);
.replace("{FractionUnitsRegex}", FractionUnitsRegex)
.replace("{RoundNumberIntegerRegexWithLocks}", RoundNumberIntegerRegexWithLocks)
.replace("{RoundNumberIntegerRegex}", RoundNumberIntegerRegex);

public static final String FractionPrepositionRegex = "(?<!{BaseNumbers.CommonCurrencySymbol}\\s*)(?<=\\b)(?<numerator>({AllIntRegex})|((?<!\\.)\\d+))\\s+over\\s+(?<denominator>({AllIntRegex})|(\\d+)(?!\\.))(?=\\b)"
.replace("{AllIntRegex}", AllIntRegex)
Expand Down Expand Up @@ -287,7 +302,7 @@ public static String DoubleWithoutIntegralRegex(String placeholder) {

public static final List<String> WrittenIntegerSeparatorTexts = Arrays.asList("und");

public static final List<String> WrittenFractionSeparatorTexts = Arrays.asList("durch");
public static final List<String> WrittenFractionSeparatorTexts = Arrays.asList("durch", "und");

public static final String HalfADozenRegex = "ein\\s+halbes\\s+dutzend";

Expand Down
Loading

0 comments on commit 141d3f2

Please sign in to comment.