fork download
  1. import re
  2.  
  3. one_to_9 = r"(?:f(?:ive|our)|s(?:even|ix)|t(?:hree|wo)|(?:ni|o)ne|eight)" # end one_to_9 definition
  4. ten_to_19 = r"(?:(?:(?:s(?:even|ix)|f(?:our|if)|nine)te|e(?:ighte|lev))en|t(?:(?:hirte)?en|welve))" # end ten_to_19 definition
  5. two_digit_prefix = r"(?:(?:s(?:even|ix)|t(?:hir|wen)|f(?:if|or)|eigh|nine)ty)" # end two_digit_prefix definition
  6. one_to_99 = fr"(?:{two_digit_prefix}(?:[-\s]{one_to_9})?|{ten_to_19}|{one_to_9})" # end one_to_99 definition
  7. one_to_999 = fr"(?:{one_to_9}\shundred(?:\s(?:and\s)?{one_to_99})?|{one_to_99})" # end one_to_999 definition
  8. one_to_999_999 = fr"(?:{one_to_999}\sthousand(?:\s{one_to_999})?|{one_to_999})" # end one_to_999_999 definition
  9. one_to_999_999_999 = fr"(?:{one_to_999}\smillion(?:\s{one_to_999_999})?|{one_to_999_999})" # end one_to_999_999_999 definition
  10. one_to_999_999_999_999 = fr"(?:{one_to_999}\sbillion(?:\s{one_to_999_999_999})?|{one_to_999_999_999})" # end one_to_999_999_999_999 definition
  11. one_to_999_999_999_999_999 = fr"(?:{one_to_999}\strillion(?:\s{one_to_999_999_999_999})?|{one_to_999_999_999_999})" # end one_to_999_999_999_999_999 definition
  12. bignumber = fr"(?:zero|{one_to_999_999_999_999_999})" # end bignumber definition
  13. zero_to_9 = fr"(?:{one_to_9}|zero)" # end zero to 9 definition
  14. decimals = fr"point(?:\s{zero_to_9})+" # end decimals definition
  15. numeral_pattern = fr"{bignumber}(?:\s{decimals})?"
  16.  
  17. #print(numeral_pattern)
  18. rx = re.compile(numeral_pattern)
  19. text = "but two of them were fool saying twenty six nine seven twenty six then the seven thousand twenty three people and all the people saying is three two just one person said one thousand thirty three and three and two and seven three"
  20. print(rx.findall(text))
Success #stdin #stdout 0.1s 12192KB
stdin
Standard input is empty
stdout
['two', 'twenty six', 'nine', 'seven', 'twenty six', 'seven thousand twenty three', 'three', 'two', 'one', 'one thousand thirty three', 'three', 'two', 'seven', 'three']