Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex filter numbers divisible by 3

Tags:

python

regex

I have a list of comma-separated ids(digits) . And I need to get only these which are divisible by 3.

Example: i = "3454353, 4354353, 345352, 2343242, 2343242 ..."

like image 464
Martin Avatar asked Dec 04 '25 09:12

Martin


1 Answers

Just for the heck of it:

reobj = re.compile(
    r"""\b            # Start of number
    (?:               # Either match...
     [0369]+          # a string of digits 0369
    |                 # or
     [147]            # 1, 4 or 7
     (?:              # followed by
      [0369]*[147]    # optional 0369s and one 1, 4 or 7
      [0369]*[258]    # optional 0369s and one 2, 4 or 8
     )*               # zero or more times,
     (?:              # followed by
      [0369]*[258]    # optional 0369s and exactly one 2, 5 or 8
     |                # or
      [0369]*[147]    # two more 1s, 4s or 7s, with optional 0369s in-between.
      [0369]*[147]
     )
    |                 # or the same thing, just the other way around,
     [258]            # this time starting with a 2, 5 or 8
     (?:
      [0369]*[258]
      [0369]*[147]
     )*
     (?:
      [0369]*[147]
     |
      [0369]*[258]
      [0369]*[258]
     )
    )+                # Repeat this as needed
    \b                # until the end of the number.""", 
    re.VERBOSE)
result = reobj.findall(subject)

will find all numbers in a string that are divisible by 3.

like image 54
Tim Pietzcker Avatar answered Dec 05 '25 22:12

Tim Pietzcker



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!