Exemple #1
0
        /// <summary>
        /// Returns the whole pattern of a persian written number
        /// </summary>
        internal string PersianNumberPattern()
        {
            string ThreeDB      = ThreeDigitBlockPattern();
            string BlockAndMult = BlockPlusMultiplier();

            string MultPlus3DB =
                RegexPatternCreator.CreateGroup("",
                                                RegexPatternCreator.ClosurePlus(
                                                    RegexPatternCreator.CreateGroup("",
                                                                                    BlockAndMult, RegexPatternCreator.BetWordWSPlus, "و", RegexPatternCreator.BetWordWSPlus
                                                                                    )
                                                    ),
                                                RegexPatternCreator.ClosureQuestionMark(
                                                    ThreeDB
                                                    )
                                                );

            string MultPlus =
                RegexPatternCreator.CreateGroup("",
                                                BlockAndMult,
                                                RegexPatternCreator.ClosureStar(RegexPatternCreator.CreateGroup("",
                                                                                                                RegexPatternCreator.BetWordWSPlus, "و", RegexPatternCreator.BetWordWSPlus, BlockAndMult
                                                                                                                )),
                                                RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("",
                                                                                                                        RegexPatternCreator.BetWordWSPlus, "و", RegexPatternCreator.BetWordWSPlus, ThreeDB
                                                                                                                        ))
                                                );

            string numberPattern = RegexPatternCreator.CreateGroup("",
                                                                   RegexPatternCreator.CreateOR(true, MultPlus, ThreeDB)
                                                                   );

            return(@"\b" + RegexPatternCreator.CreateOR(false, numberPattern, "(صفرم)", "(صفر)") + @"\b");
        }
Exemple #2
0
        /// <summary>
        /// Returns regex pattern for 3-digit numbers from ones to ten-and ones. e.g. 117, 308 (NOT 120).
        /// </summary>
        /// <returns></returns>
        private string AllUpToOnesAndTenOnes()
        {
            string hundsGroup = RegexPatternCreator.ClosureQuestionMark(
                RegexPatternCreator.CreateGroup("", HundsPattern(),
                                                RegexPatternCreator.BetWordWSPlus, "و", RegexPatternCreator.BetWordWSPlus
                                                )
                );

            string tensGroup =
                RegexPatternCreator.ClosureQuestionMark(
                    RegexPatternCreator.CreateGroup("", TensPattern(),
                                                    RegexPatternCreator.BetWordWSPlus, "و", RegexPatternCreator.BetWordWSPlus
                                                    )
                    );

            string numberPattern =
                RegexPatternCreator.CreateGroup("", hundsGroup,
                                                RegexPatternCreator.CreateGroup("", RegexPatternCreator.CreateOR(true,
                                                                                                                 TenOnesPattern(),
                                                                                                                 RegexPatternCreator.CreateGroup("", tensGroup, OnesPattern())
                                                                                                                 ))
                                                );

            return(@"\b" + numberPattern + OrdinalityPattern() + @"\b");
        }
Exemple #3
0
        /// <summary>
        /// returns the pattern that makes numbers ordinal. i.e. adds "م" and "ام" in the end.
        /// </summary>
        /// <returns></returns>
        private string OrdinalityPattern()
        {
            string ordinalityPat = RegexPatternCreator.ClosureQuestionMark(
                RegexPatternCreator.CreateGroup("",
                                                RegexPatternCreator.InWordWSStar,
                                                RegexPatternCreator.CreateGroup("", RegexPatternCreator.CreateOR(true, "م", "ام"))
                                                )
                );

            return(ordinalityPat);
        }
        /// <summary>
        /// Returns the complete regex date pattern in Persian.
        /// </summary>
        /// <returns></returns>
        private string PersianDatePattern()
        {
            string monthYearOptionalLiteral = RegexPatternCreator.CreateGroup("",
                                                                              RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("",
                                                                                                                                                      RegexPatternCreator.BetWordWSPlus, "ماه")),
                                                                              RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("",
                                                                                                                                                      RegexPatternCreator.BetWordWSPlus, "سال"))
                                                                              );

            string optionalWeekday = RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("", WeekdayPattern(), RegexPatternCreator.BetWordWSPlus));
            string optionalYear    = RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("", RegexPatternCreator.BetWordWSPlus, YearPattern()));
            string datePattern     = RegexPatternCreator.CreateGroup("PersianDate", optionalWeekday, DayNumPattern(), RegexPatternCreator.BetWordWSPlus, MonthNamePattern(), monthYearOptionalLiteral, optionalYear);

            return(@"\b" + datePattern + @"\b");
        }
Exemple #5
0
        /// <summary>
        /// Returns the complete regex pattern for an English date.
        /// </summary>
        /// <returns></returns>
        private string EnglishDatePattern()
        {
            string optionalWeekday =
                RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("",
                                                                                        WeekdayPattern(),
                                                                                        RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.BetWordWSPlus),
                                                                                        RegexPatternCreator.ClosureQuestionMark(","),
                                                                                        RegexPatternCreator.BetWordWSPlus
                                                                                        ));
            string optionalYear =
                RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.CreateGroup("",
                                                                                        RegexPatternCreator.ClosureQuestionMark(RegexPatternCreator.BetWordWSPlus),
                                                                                        RegexPatternCreator.ClosureQuestionMark(","),
                                                                                        RegexPatternCreator.BetWordWSPlus,
                                                                                        YearPattern()));
            string datePattern = RegexPatternCreator.CreateGroup("EnglishDate", optionalWeekday, MonthNamePattern(), RegexPatternCreator.BetWordWSPlus, DayNumPattern(), optionalYear);


            return(@"\b" + datePattern + @"\b");
        }
Exemple #6
0
        /// <summary>
        /// Returns regex patterns for the multipliers of 100. e.g. سیصد، دویست، نهصد، صد
        /// </summary>
        /// <returns></returns>
        private string HundsPattern()
        {
            string writtenNum =
                RegexPatternCreator.CreateGroup(HUNDSNUM_NAME,
                                                RegexPatternCreator.CreateOR(false, "یک", "دو", "سی", "چهار", "پان", "پون", "پنج", "شش", "شیش", "هفت", "هشت", "نه"));
            string hunds =
                RegexPatternCreator.CreateGroup(HUNDS_NAME,
                                                RegexPatternCreator.CreateOR(true,
                                                                             RegexPatternCreator.CreateGroup("",
                                                                                                             RegexPatternCreator.ClosureQuestionMark(
                                                                                                                 RegexPatternCreator.CreateGroup("", writtenNum, RegexPatternCreator.InWordWSStar)
                                                                                                                 ),
                                                                                                             "صد"),
                                                                             "دویست", "سیصد"));

            return(hunds);
        }
Exemple #7
0
 /// <summary>
 /// Returns the regex pattern for the day number (in month) in an English date, which can only be digits.
 /// </summary>
 /// <returns></returns>
 private string DayNumPattern()
 {
     return(RegexPatternCreator.CreateGroup("",
                                            RegexPatternCreator.CreateGroup("DayNum", @"\d\d?"),
                                            RegexPatternCreator.ClosureQuestionMark("th|st|rd|nd")));
 }
        /// <summary>
        /// Returns regex pattern for week-day part of the date pattern
        /// </summary>
        /// <returns></returns>
        public string WeekdayPattern()
        {
            string weekdayDigits = "[12345۱۲۳۴۵]";
            string writtenNum    = RegexPatternCreator.CreateGroup("WeekdayNum", RegexPatternCreator.CreateOR(false, "یک", "دو", "سه", "چهار", "پنج", weekdayDigits));

            string weekday =
                RegexPatternCreator.CreateGroup("Weekday",
                                                RegexPatternCreator.CreateOR(true,
                                                                             RegexPatternCreator.CreateGroup("",
                                                                                                             RegexPatternCreator.ClosureQuestionMark(
                                                                                                                 RegexPatternCreator.CreateGroup("", writtenNum, RegexPatternCreator.InWordWSStar)
                                                                                                                 ),
                                                                                                             "شنبه"),
                                                                             "جمعه"));

            return(weekday);
        }