ru.sor 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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]1)" $1 $3|$(\2:ss)
  121. "((EUR|GBP|USD) [-−]?\d+)[.,]([02-9]2)" $1 $3|$(\2:sp)
  122. "(([A-Z]{3}) [-−]?\d+)[.,]([02-9][234])" $1 |$3$(\2:sp)
  123. "(([A-Z]{3}) [-−]?\d+)[.,](\d)" $1 |$(\30)$(\2:sg)
  124. "(([A-Z]{3}) [-−]?\d+)[.,](\d\d)" $1 |$3$(\2:sg)
  125. == cardinal-masculine? ==
  126. (.*) $(\1)
  127. == cardinal-feminine ==
  128. (.*) $(f:$1)
  129. == cardinal-neuter ==
  130. (.*) $(n:$1)
  131. == ordinal-feminine ==
  132. 0 нулевая
  133. ([-−]?\d+) $(ordinal-feminine |$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. (.*)ьсот \1исотая
  150. "одна тысяча" тысячная
  151. "(.* )тысяч[аи]?" $(pos:\1)тысячная
  152. "один (\w+илли\w+)" \1ная
  153. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ная
  154. "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ная
  155. (.*) \1ая
  156. == ordinal-neuter ==
  157. 0 нулевое
  158. ([-−]?\d+) $(ordinal-neuter |$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. (.*)ьсот \1исотое
  175. "одна тысяча" тысячное
  176. "(.* )тысяч[аи]?" $(pos:\1)тысячное
  177. "один ([а-я]+илли[а-я]+)" \1ное
  178. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\1)\2ное
  179. "(.* )([а-я]+илли[а-я]+)" $(pos:\1)\2ное
  180. (.*) \1ое
  181. == ordinal(-masculine)? ==
  182. 0 нулевой
  183. ([-−]?\d+) $(ordinal |$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. (.*)ьсот \2исотый
  201. "одна тысяча" тысячный
  202. "(.* )тысяч[аи]?" $(pos:\2)тысячный
  203. "один ([а-я]+илли[а-я]+)" \2ный
  204. "(.* )([а-я]+илли[а-я]+)(а|ов)" $(pos:\2)\3ный
  205. "(.* )([а-я]+илли[а-я]+)" $(pos:\2)\3ный
  206. (.*) \2ый
  207. == ordinal-number-feminine ==
  208. (\d+) \1-я
  209. == ordinal-number-neuter ==
  210. (\d+) \1-е
  211. == ordinal-number(-masculine)? ==
  212. (\d+) \2-й
  213. == help ==
  214. "" |$(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)
  215. (.*) \1: |$(\1 1)|, |$(\1 2)|, |$(\1 3)|\n