import sys import re import json import re import regex regexes = [ # Capture "" r"(ab|a)*?b", r"(ab|a)+?b", r"(ab|a){0,}?b", # Capture "a" r"(ab|a){0,2}?b", r"(ab|a)?b", r"(ab|a)??b", r"(ab|a)b", r"(ab|a){0,1}?b", r"(ab|a)*b", r"(ab|a)+b", r"(a|ab)*b", r"(a|ab)+b", r"(a|ab)*?b", r"(a|ab)+?b", r"(a|ab)*?b", r"(a|ab)*?b", r"(a|ab)*?b", r"(a|ab)*?b", r"(bb|a)*?b", r"((?:ab|a)*?)b", r"((?:a|ab)*?)b", ] matches_re = [ re.search(r, "ab") for r in regexes ] matches_regex = [ regex.search(r, "ab") for r in regexes ] print("\n\nBehavior from re\n\n") formatString = "%-20s %20s %20s %20s" print(formatString % ("Regex pattern", "matched?", "matched string", "captured content")) print(formatString % ("-"*20, "-"*20, "-"*20, "-"*20)) for r, m in zip(regexes, matches_re): if m: matched = True matchedString = m.group(0) groups = m.groups() else: matched = False matchedString = "" groups = [""] print(formatString % (r, matched, matchedString, groups)) print("\n\nBehavior from regex\n\n") formatString = "%-20s %20s %20s %20s" print(formatString % ("Regex pattern", "matched?", "matched string", "captured content")) print(formatString % ("-"*20, "-"*20, "-"*20, "-"*20)) for r, m in zip(regexes, matches_regex): if m: matched = True matchedString = m.group(0) groups = m.groups() else: matched = False matchedString = "" groups = [""] print(formatString % (r, matched, matchedString, groups))