Skip to content

Instantly share code, notes, and snippets.

@Steboss89
Created April 12, 2022 15:34
Show Gist options
  • Save Steboss89/20a6e32f6df93ad1d83f5bfd4ca25a37 to your computer and use it in GitHub Desktop.
Save Steboss89/20a6e32f6df93ad1d83f5bfd4ca25a37 to your computer and use it in GitHub Desktop.
Third winning approach for regex
one_to_9 = r"(?:f(?:ive|our)|s(?:even|ix)|t(?:hree|wo)|(?:ni|o)ne|eight)" # end one_to_9 definition
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
two_digit_prefix = r"(?:(?:s(?:even|ix)|t(?:hir|wen)|f(?:if|or)|eigh|nine)ty)" # end two_digit_prefix definition
one_to_99 = fr"(?:{two_digit_prefix}(?:[-\s]{one_to_9})?|{ten_to_19}|{one_to_9})" # end one_to_99 definition
one_to_999 = fr"(?:{one_to_9}\shundred(?:\s(?:and\s)?{one_to_99})?|{one_to_99})" # end one_to_999 definition
one_to_999_999 = fr"(?:{one_to_999}\sthousand(?:\s{one_to_999})?|{one_to_999})" # end one_to_999_999 definition
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
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
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
bignumber = fr"(?:zero|{one_to_999_999_999_999_999})" # end bignumber definition
zero_to_9 = fr"(?:{one_to_9}|zero)" # end zero to 9 definition
decimals = fr"point(?:\s{zero_to_9})+" # end decimals definition
numeral_pattern = fr"{bignumber}(?:\s{decimals})?"
re.findall(numeral_pattern, data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment