ru.sor 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. ^0 ноль
  2. 1 один
  3. 2 два
  4. 3 три
  5. 4 четыре
  6. 5 пять
  7. 6 шесть
  8. 7 семь
  9. 8 восемь
  10. 9 девять
  11. 10 десять
  12. 11 одиннадцать
  13. 12 двенадцать
  14. 13 тринадцать
  15. 14 четырнадцать
  16. 15 пятнадцать
  17. 16 шестнадцать
  18. 17 семнадцать
  19. 18 восемнадцать
  20. 19 девятнадцать
  21. ([23])(\d) $1|дцать[ $2]
  22. 4(\d) сорок[ $1]
  23. 9(\d) девяносто[ $1]
  24. (\d)(\d) $1десят[ $2]
  25. 1(\d\d) сто[ $1]
  26. 2(\d\d) двести[ $1]
  27. ([34])(\d\d) $1ста[ $2]
  28. (\d)(\d\d) $1сот[ $2]
  29. (1|\d?[02-9]1)(\d{3}) $(f:$1) тысяча[ $2]
  30. ([234]|\d?[02-9][234])(\d{3}) $(f:$1) тысячи[ $2]
  31. (\d{1,3})(\d{3}) $1 тысяч[ $2]
  32. (1|\d?[02-9]1)(\d{6}) $1 миллион[ $2]
  33. ([234]|\d?[02-9][234])(\d{6}) $1 миллиона[ $2]
  34. (\d{1,3})(\d{6}) $1 миллионов[ $2]
  35. (1|\d?[02-9]1)(\d{9}) $1 миллиард[ $2]
  36. ([234]|\d?[02-9][234])(\d{9}) $1 миллиарда[ $2]
  37. (\d{1,3})(\d{9}) $1 миллиардов[ $2]
  38. (1|\d?[02-9]1)(\d{12}) $1 триллион[ $2]
  39. ([234]|\d?[02-9][234])(\d{12}) $1 триллиона[ $2]
  40. (\d{1,3})(\d{12}) $1 триллионов[ $2]
  41. (1|\d?[02-9]1)(\d{15}) $1 квадриллион[ $2]
  42. ([234]|\d?[02-9][234])(\d{15}) $1 квадриллиона[ $2]
  43. (\d{1,3})(\d{15}) $1 квадриллионов[ $2]
  44. (1|\d?[02-9]1)(\d{18}) $1 квинтиллион[ $2]
  45. ([234]|\d?[02-9][234])(\d{18}) $1 квинтиллиона[ $2]
  46. (\d{1,3})(\d{18}) $1 квинтиллионов[ $2]
  47. (1|\d?[02-9]1)(\d{21}) $1 секстилион[ $2]
  48. ([234]|\d?[02-9][234])(\d{21}) $1 секстилиона[ $2]
  49. (\d{1,3})(\d{21}) $1 секстилионов[ $2]
  50. (1|\d?[02-9]1)(\d{24}) $1 септиллион[ $2]
  51. ([234]|\d?[02-9][234])(\d{24}) $1 септиллиона[ $2]
  52. (\d{1,3})(\d{24}) $1 септиллионов[ $2]
  53. # negative numbers
  54. [-−]1 минус единица
  55. [-−](\d+) минус |$1
  56. # decimals
  57. "([-−]?)[.,](\d+)" $(\10.\2)
  58. "[-−]1[.,]" минус одна целая
  59. "([-−]?\d+[02-9]1|1)[.,]" $(f:|$1) целая
  60. "([-−]?\d+)[.,]" $(f:|$1) целых
  61. "([-−]?\d+[.,])1" $1| и одна десятая
  62. "([-−]?\d+[.,])(\d)" $1| и $(f:|$2) десятых
  63. "([-−]?\d+[.,])([02-9]1)" $1| и $(f:|$2) сотая
  64. "([-−]?\d+[.,])(\d\d)" $1| и $(f:|$2) сотых
  65. "([-−]?\d+[.,])(\d[02-9]1)" $1| и $(f:|$2) тысячная
  66. "([-−]?\d+[.,])(\d{3})" $1| и $(f:|$2) тысячных
  67. "([-−]?\d+[.,])(\d)(\d)(\d)(\d)" $1| |$2 |$3 |$4 |$5
  68. "([-−]?\d+[.,]\d*)(\d)" $1| |$2
  69. # female conversion
  70. f:(.*)один \1одна
  71. f:(.*)два \1две
  72. f:(.*) \1
  73. # neuter conversion
  74. n:(.*)один \1одно
  75. n:(.*) \1
  76. # possessive (1-999) - used in ordinals
  77. "pos:(.* )?од(ин|на) ?" [$(pos:\1)]одно
  78. "pos:(.* )?дв[ае] ?" [$(pos:\1)]двух
  79. "pos:(.* )?три ?" [$(pos:\1)]трёх
  80. "pos:(.* )?четыре ?" [$(pos:\1)]четырёх
  81. "pos:(.* )?восемь ?" [$(pos:\1)]восьми
  82. "pos:(.* )?([а-я]+)ь ?" [$(pos:\1)]\2и
  83. "pos:(.* )?сорок ?" [$(pos:\1)]сорока
  84. "pos:(.* )?восемьдесят ?" [$(pos:\1)]восьмидесяти
  85. "pos:(.* )?([а-я]+)ьдесят ?" [$(pos:\1)]\2идесяти
  86. "pos:(.* )?([а-я]*)сто ?" [$(pos:\1)]\2сто
  87. "pos:(.*)двести ?" \1двухсот
  88. "pos:(.*)[еи]ста ?" \1ёхсот
  89. "pos:(.*)осемьсот ?" \1осьмисот
  90. "pos:(.*)ьсот ?" \1исот
  91. pos:(.*) \1
  92. # currency
  93. # unit/subunit
  94. us:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \1
  95. up:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \2
  96. ug:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \3
  97. ss:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \4
  98. sp:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \5
  99. sg:([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*) \6
  100. EUR:(\D+) $(\1: евро, евро, евро, цент, цента, центов)
  101. GBP:(\D+) $(\1: фунт стерлингов, фунта стерлингов, фунтов стерлингов, пенни, пенса, пенсов)
  102. RUB:(\D+) $(\1: рубль, рубля, рублей, копейка, копейки, копеек)
  103. UAH:(\D+) $(\1: гривна, гривны, гривен, копейка, копейки, копеек)
  104. USD:(\D+) $(\1: доллар США, доллара США, долларов США, цент, цента, центов)
  105. "(UAH) ([-−]?1)([.,]00?)?" $(f:$2)|$(\1:us)
  106. "(UAH) ([-−]?\d*[02-9]1)([.,]00?)?" $(f:$2)|$(\1:us)
  107. "(UAH) ([-−]?[234])([.,]00?)?" $(f:$2)|$(\1:up)
  108. "(UAH) ([-−]?\d*[02-9][234])([.,]00?)?" $(f:$2)|$(\1:up)
  109. "(UAH) ([-−]?\d+)([.,]00?)?" $(f:$2)|$(\1:ug)
  110. "([A-Z]{3}) ([-−]?1)([.,]00?)?" $2|$(\1:us)
  111. "([A-Z]{3}) ([-−]?\d*[02-9]1)([.,]00?)?" $2|$(\1:us)
  112. "([A-Z]{3}) ([-−]?[234])([.,]00?)?" $2|$(\1:up)
  113. "([A-Z]{3}) ([-−]?\d*[02-9][234])([.,]00?)?" $2|$(\1:up)
  114. "([A-Z]{3}) ([-−]?\d+)([.,]00?)?" $2|$(\1:ug)
  115. "((RUB) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
  116. "((RUB) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]две$(\2:sp)
  117. "((UAH) [-−]?\d+)[.,]([02-9])1" $1 [$(\30) ]одна$(\2:ss)
  118. "((UAH) [-−]?\d+)[.,]([02-9])2" $1 [$(\30) ]две$(\2:sp)
  119. "(([A-Z]{3}) [-−]?\d+)[.,](01)" $1 |$(1)$(\2:ss)
  120. "((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]2)" $1 $3|$(\2:sp)
  121. "(([A-Z]{3}) [-−]?\d+)[.,]([02-9][234])" $1 |$3$(\2:sp)
  122. "(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 |$(\30)$(\2:sg)
  123. "(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 |$3$(\2:sg)
  124. == cardinal-masculine? ==
  125. (.*) $(\1)
  126. == cardinal-feminine ==
  127. (.*) $(f:$1)
  128. == cardinal-neuter ==
  129. (.*) $(n:$1)
  130. == ordinal-feminine ==
  131. 0 нулевая
  132. ([-−]?\d+) $(ordinal-feminine |$1)
  133. (.*)один \1первая
  134. (.*)два \1вторая
  135. (.*)три \1третья
  136. (.*)ыре \1вёртая
  137. (.*)осемь \1осьмая
  138. (.*)мь \1дьмая
  139. (.*)ь \1ая
  140. (.*)к \1ковая
  141. (.*)осемьдесят \1осьмидесятая
  142. (.*)ьдесят \1идесятая
  143. (.*)осто \1остая
  144. (.*)сто \1сотая
  145. (.*)вести \1вухсотая
  146. (.*)[еи]ста \1ёхсотая
  147. (.*)осемьсот \1осьмисотая
  148. (.*)ьсот \1исотая
  149. "одна тысяча" тысячная
  150. "(.* )тысяч[аи]?" $(pos:\1)тысячная
  151. "один (\w+илли\w+)" \1ная
  152. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ная
  153. "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ная
  154. (.*) \1ая
  155. == ordinal-neuter ==
  156. 0 нулевое
  157. ([-−]?\d+) $(ordinal-neuter |$1)
  158. (.*)один \1первое
  159. (.*)два \1второе
  160. (.*)три \1третье
  161. (.*)ыре \1вёртое
  162. (.*)осемь \1осьмое
  163. (.*)мь \1дьмое
  164. (.*)ь \1ое
  165. (.*)к \1ковое
  166. (.*)осемьдесят \1осьмидесятое
  167. (.*)ьдесят \1идесятое
  168. (.*)осто \1остое
  169. (.*)сто \1сотое
  170. (.*)вести \1вухсотое
  171. (.*)[еи]ста \1ёхсотое
  172. (.*)осемьсот \1осьмисотое
  173. (.*)ьсот \1исотое
  174. "одна тысяча" тысячное
  175. "(.* )тысяч[аи]?" $(pos:\1)тысячное
  176. "один ([а-я]+илли[а-я]+)" \1ное
  177. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ное
  178. "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ное
  179. (.*) \1ое
  180. == ordinal(-masculine)? ==
  181. 0 нулевой
  182. ([-−]?\d+) $(ordinal |$2)
  183. (.*)один \2первый
  184. (.*)два \2второй
  185. (.*)три \2третий
  186. (.*)ыре \2вёртый
  187. (.*)сть \2стой
  188. (.*)осемь \2осьмой
  189. (.*)мь \2дьмой
  190. (.*)ь \2ый
  191. (.*)к \2ковой
  192. (.*)осемьдесят \2осьмидесятый
  193. (.*)ьдесят \2идесятый
  194. (.*)осто \2остый
  195. (.*)сто \2сотый
  196. (.*)вести \2вухсотый
  197. (.*)[еи]ста \2ёхсотый
  198. (.*)осемьсот \2осьмисотый
  199. (.*)ьсот \2исотый
  200. "одна тысяча" тысячный
  201. "(.* )тысяч[аи]?" $(pos:\2)тысячный
  202. "один ([а-я]+илли[а-я]+)" \2ный
  203. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\2)\3ный
  204. "(.* )([а-я]+илли[а-я]+)" $(pos:\2)\3ный
  205. (.*) \2ый
  206. == ordinal-number-feminine ==
  207. (\d+) \1-я
  208. == ordinal-number-neuter ==
  209. (\d+) \1-е
  210. == ordinal-number(-masculine)? ==
  211. (\d+) \2-й
  212. == help ==
  213. "" |$(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)
  214. (.*) \1: |$(\1 1)|, |$(\1 2)|, |$(\1 3)|\n