import re
num = fr"""(\d\d)([A-Z])?"""
sep = fr"""and |or |, """
#pattern composition
pattern = fr"""{num}(?:\s*(?:{sep})\s*{num})*"""
text= """biscuits 10 are good
biscuits 20 and 30 are good
biscuits 40 and hot dog are good
but this one 50A and 50B and not ok"""
refs = re.finditer(pattern, text, re.VERBOSE,)
for ref in refs:
TEXT = ref.group()
print(TEXT)
aW1wb3J0IHJlCm51bSAgPSBmciIiIihcZFxkKShbQS1aXSk/IiIiCnNlcCAgPSBmciIiImFuZCB8b3IgfCwgIiIiCgojcGF0dGVybiBjb21wb3NpdGlvbgpwYXR0ZXJuID0gZnIiIiJ7bnVtfSg/OlxzKig/OntzZXB9KVxzKntudW19KSoiIiIKCnRleHQ9ICIiImJpc2N1aXRzIDEwIGFyZSBnb29kCmJpc2N1aXRzIDIwIGFuZCAzMCBhcmUgZ29vZApiaXNjdWl0cyA0MCBhbmQgaG90IGRvZyBhcmUgZ29vZApidXQgdGhpcyBvbmUgNTBBIGFuZCA1MEIgYW5kIG5vdCBvayIiIgoKcmVmcyA9IHJlLmZpbmRpdGVyKHBhdHRlcm4sIHRleHQsIHJlLlZFUkJPU0UsKQpmb3IgcmVmIGluIHJlZnM6CiAgICBURVhUID0gcmVmLmdyb3VwKCkKICAgIHByaW50KFRFWFQpCg==