^0 ноль 1 один 2 два 3 три 4 четыре 5 пять 6 шесть 7 семь 8 восемь 9 девять 10 десять 11 одиннадцать 12 двенадцать 13 тринадцать 14 четырнадцать 15 пятнадцать 16 шестнадцать 17 семнадцать 18 восемнадцать 19 девятнадцать ([23])(\d) $1|дцать[ $2] 4(\d) сорок[ $1] 9(\d) девяносто[ $1] (\d)(\d) $1десят[ $2] 1(\d\d) сто[ $1] 2(\d\d) двести[ $1] ([34])(\d\d) $1ста[ $2] (\d)(\d\d) $1сот[ $2] (1|\d?[02-9]1)(\d{3}) $(f:$1) тысяча[ $2] ([234]|\d?[02-9][234])(\d{3}) $(f:$1) тысячи[ $2] (\d{1,3})(\d{3}) $1 тысяч[ $2] (1|\d?[02-9]1)(\d{6}) $1 миллион[ $2] ([234]|\d?[02-9][234])(\d{6}) $1 миллиона[ $2] (\d{1,3})(\d{6}) $1 миллионов[ $2] (1|\d?[02-9]1)(\d{9}) $1 миллиард[ $2] ([234]|\d?[02-9][234])(\d{9}) $1 миллиарда[ $2] (\d{1,3})(\d{9}) $1 миллиардов[ $2] (1|\d?[02-9]1)(\d{12}) $1 триллион[ $2] ([234]|\d?[02-9][234])(\d{12}) $1 триллиона[ $2] (\d{1,3})(\d{12}) $1 триллионов[ $2] (1|\d?[02-9]1)(\d{15}) $1 квадриллион[ $2] ([234]|\d?[02-9][234])(\d{15}) $1 квадриллиона[ $2] (\d{1,3})(\d{15}) $1 квадриллионов[ $2] (1|\d?[02-9]1)(\d{18}) $1 квинтиллион[ $2] ([234]|\d?[02-9][234])(\d{18}) $1 квинтиллиона[ $2] (\d{1,3})(\d{18}) $1 квинтиллионов[ $2] (1|\d?[02-9]1)(\d{21}) $1 секстилион[ $2] ([234]|\d?[02-9][234])(\d{21}) $1 секстилиона[ $2] (\d{1,3})(\d{21}) $1 секстилионов[ $2] (1|\d?[02-9]1)(\d{24}) $1 септиллион[ $2] ([234]|\d?[02-9][234])(\d{24}) $1 септиллиона[ $2] (\d{1,3})(\d{24}) $1 септиллионов[ $2] # negative numbers [-−]1 минус единица [-−](\d+) минус |$1 # decimals "([-−]?)[.,](\d+)" $(\10.\2) "[-−]1[.,]" минус одна целая "([-−]?\d+[02-9]1|1)[.,]" $(f:|$1) целая "([-−]?\d+)[.,]" $(f:|$1) целых "([-−]?\d+[.,])1" $1| и одна десятая "([-−]?\d+[.,])(\d)" $1| и $(f:|$2) десятых "([-−]?\d+[.,])([02-9]1)" $1| и $(f:|$2) сотая "([-−]?\d+[.,])(\d\d)" $1| и $(f:|$2) сотых "([-−]?\d+[.,])(\d[02-9]1)" $1| и $(f:|$2) тысячная "([-−]?\d+[.,])(\d{3})" $1| и $(f:|$2) тысячных "([-−]?\d+[.,])(\d)(\d)(\d)(\d)" $1| |$2 |$3 |$4 |$5 "([-−]?\d+[.,]\d*)(\d)" $1| |$2 # female conversion f:(.*)один \1одна f:(.*)два \1две f:(.*) \1 # neuter conversion n:(.*)один \1одно n:(.*) \1 # possessive (1-999) - used in ordinals "pos:(.* )?од(ин|на) ?" [$(pos:\1)]одно "pos:(.* )?дв[ае] ?" [$(pos:\1)]двух "pos:(.* )?три ?" [$(pos:\1)]трёх "pos:(.* )?четыре ?" [$(pos:\1)]четырёх "pos:(.* )?восемь ?" [$(pos:\1)]восьми "pos:(.* )?([а-я]+)ь ?" [$(pos:\1)]\2и "pos:(.* )?сорок ?" [$(pos:\1)]сорока "pos:(.* )?восемьдесят ?" [$(pos:\1)]восьмидесяти "pos:(.* )?([а-я]+)ьдесят ?" [$(pos:\1)]\2идесяти "pos:(.* )?([а-я]*)сто ?" [$(pos:\1)]\2сто "pos:(.*)двести ?" \1двухсот "pos:(.*)[еи]ста ?" \1ёхсот "pos:(.*)осемьсот ?" \1осьмисот "pos:(.*)ьсот ?" \1исот pos:(.*) \1 # currency # unit/subunit us:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \1 up:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \2 ug:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \3 ss:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \4 sp:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \5 sg:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \6 EUR:(\D+) $(\1: евро, евро, евро, цент, цента, центов) GBP:(\D+) $(\1: фунт стерлингов, фунта стерлингов, фунтов стерлингов, пенни, пенса, пенсов) RUB:(\D+) $(\1: рубль, рубля, рублей, копейка, копейки, копеек) UAH:(\D+) $(\1: гривна, гривны, гривен, копейка, копейки, копеек) USD:(\D+) $(\1: доллар США, доллара США, долларов США, цент, цента, центов) "(UAH) ([-−]?1)([.,]00?)?" $(f:$2)|$(\1:us) "(UAH) ([-−]?\d*[02-9]1)([.,]00?)?" $(f:$2)|$(\1:us) "(UAH) ([-−]?[234])([.,]00?)?" $(f:$2)|$(\1:up) "(UAH) ([-−]?\d*[02-9][234])([.,]00?)?" $(f:$2)|$(\1:up) "(UAH) ([-−]?\d+)([.,]00?)?" $(f:$2)|$(\1:ug) "([A-Z]{3}) ([-−]?1)([.,]00?)?" $2|$(\1:us) "([A-Z]{3}) ([-−]?\d*[02-9]1)([.,]00?)?" $2|$(\1:us) "([A-Z]{3}) ([-−]?[234])([.,]00?)?" $2|$(\1:up) "([A-Z]{3}) ([-−]?\d*[02-9][234])([.,]00?)?" $2|$(\1:up) "([A-Z]{3}) ([-−]?\d+)([.,]00?)?" $2|$(\1:ug) "((RUB) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss) "((RUB) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]две$(\2:sp) "((UAH) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss) "((UAH) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]две$(\2:sp) "(([A-Z]{3}) [-−]?\d+)[.,](01)" $1 |$(1)$(\2:ss) "((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]1)" $1 $3|$(\2:ss) "((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]2)" $1 $3|$(\2:sp) "(([A-Z]{3}) [-−]?\d+)[.,]([02-9][234])" $1 |$3$(\2:sp) "(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 |$(\30)$(\2:sg) "(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 |$3$(\2:sg) == cardinal-masculine? == (.*) $(\1) == cardinal-feminine == (.*) $(f:$1) == cardinal-neuter == (.*) $(n:$1) == ordinal-feminine == 0 нулевая ([-−]?\d+) $(ordinal-feminine |$1) (.*)один \1первая (.*)два \1вторая (.*)три \1третья (.*)ыре \1вёртая (.*)осемь \1осьмая (.*)мь \1дьмая (.*)ь \1ая (.*)к \1ковая (.*)осемьдесят \1осьмидесятая (.*)ьдесят \1идесятая (.*)осто \1остая (.*)сто \1сотая (.*)вести \1вухсотая (.*)[еи]ста \1ёхсотая (.*)осемьсот \1осьмисотая (.*)ьсот \1исотая "одна тысяча" тысячная "(.* )тысяч[аи]?" $(pos:\1)тысячная "один (\w+илли\w+)" \1ная "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ная "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ная (.*) \1ая == ordinal-neuter == 0 нулевое ([-−]?\d+) $(ordinal-neuter |$1) (.*)один \1первое (.*)два \1второе (.*)три \1третье (.*)ыре \1вёртое (.*)осемь \1осьмое (.*)мь \1дьмое (.*)ь \1ое (.*)к \1ковое (.*)осемьдесят \1осьмидесятое (.*)ьдесят \1идесятое (.*)осто \1остое (.*)сто \1сотое (.*)вести \1вухсотое (.*)[еи]ста \1ёхсотое (.*)осемьсот \1осьмисотое (.*)ьсот \1исотое "одна тысяча" тысячное "(.* )тысяч[аи]?" $(pos:\1)тысячное "один ([а-я]+илли[а-я]+)" \1ное "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ное "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ное (.*) \1ое == ordinal(-masculine)? == 0 нулевой ([-−]?\d+) $(ordinal |$2) (.*)один \2первый (.*)два \2второй (.*)три \2третий (.*)ыре \2вёртый (.*)сть \2стой (.*)осемь \2осьмой (.*)мь \2дьмой (.*)ь \2ый (.*)к \2ковой (.*)осемьдесят \2осьмидесятый (.*)ьдесят \2идесятый (.*)осто \2остый (.*)сто \2сотый (.*)вести \2вухсотый (.*)[еи]ста \2ёхсотый (.*)осемьсот \2осьмисотый (.*)ьсот \2исотый "одна тысяча" тысячный "(.* )тысяч[аи]?" $(pos:\2)тысячный "один ([а-я]+илли[а-я]+)" \2ный "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\2)\3ный "(.* )([а-я]+илли[а-я]+)" $(pos:\2)\3ный (.*) \2ый == ordinal-number-feminine == (\d+) \1-я == ordinal-number-neuter == (\d+) \1-е == ordinal-number(-masculine)? == (\d+) \2-й == help == "" |$(1)|, |$(2)|, |$(3)|\n$(help cardinal-feminine)$(help cardinal-masculine)$(help cardinal-neuter)$(help ordinal-feminine)$(help ordinal-masculine)$(help ordinal-neuter)$(help ordinal-number-feminine)$(help ordinal-number-masculine)$(help ordinal-number-neuter) (.*) \1: |$(\1 1)|, |$(\1 2)|, |$(\1 3)|\n