import re
regex = re.compile(r"\[([A-G][#b]?(maj|m)?[27]?(add|aug|dim|sus)?[2-9]?)\]")
test_str = ("[Am7], [C6]\n"
"[C7]\n"
"[Cmaj7]\n"
"[C]\n"
"[Fadd9]\n"
"[C7sus4]\n"
"[Csus4], [Fsus2]\n"
"[A7]\n"
"[Edim]\n"
"[A9], [Em6]\n"
"[Dbdim]\n"
"[Eb9]\n"
"[Gdim]\n"
"[A7sus4]\n"
"[C9], [Gm6]\n"
"[Em7], [G6]\n"
"[Bb6], [Gm7]\n"
"[G7]\n"
"[G7sus4]\n"
"[Gmaj7]\n"
"[Dsus4], [Gsus2]\n"
"[Gm]\n"
"[G]\n"
"[Csus2], [Gsus4]\n"
"[Ebadd9]\n"
"[Eb]\n"
"[Ebaug], [Gaug]\n"
"[Cm]\n"
"[Em9]\n"
"[Cadd9]\n"
"[Abaug], [Caug], [Eaug]\n"
"[Fm]\n"
"[Amaj7]\n"
"[Dbm6], [Gb9]\n"
"[Dbm7]\n"
"[Bbm7], [Db6]\n"
"[Db7]\n"
"[Db]\n"
"[Gbadd9]\n"
"[Gbsus2]\n"
"[E7]\n"
"[Bb7]\n"
"[Abdim], [Fdim]\n"
"[Fm6]\n"
"[Gbm9]\n"
"[Bm6], [E9]\n"
"[Emaj7]\n"
"[Dbm9]\n"
"[Bb7sus4]\n"
"[Db9]\n"
"[Ab6], [Fm7]\n"
"[Dbadd9]\n"
"[Abm7], [B6]\n"
"[Ab7]\n"
"[Ab7sus4]\n"
"[Abmaj7]\n"
"[Absus2]\n"
"[Absus4]\n"
"[E]\n"
"[Eadd9]\n"
"[Am]\n"
"[Am9]\n"
"[F]\n"
"[Am6]\n"
"[A]\n"
"[Aadd9], [Bm9]\n"
"[Dbaug], [Faug]\n"
"[Aaug]\n"
"[A6], [Gbm]\n"
"[Gbm6]\n"
"[Asus4], [Dsus2]\n"
"[Dm]\n"
"[Dm6], [G9]\n"
"[Dm7], [F6]\n"
"[D]\n"
"[Bm7], [D6]\n"
"[D7]\n"
"[Dmaj7]\n"
"[Gm9]\n"
"[D7sus4]\n"
"[F7]\n"
"[Ebdim]\n"
"[B7]\n"
"[Adim], [Gbdim]\n"
"[Cm6], [F9]\n"
"[Fmaj7]\n"
"[B7sus4]\n"
"[D9]\n"
"[Gbm7]\n"
"[Bbsus2], [Fsus4]\n"
"[Bbdim]\n"
"[Bbm]\n"
"[Bbm9]\n"
"[Gb]\n"
"[Bbm6]\n"
"[Bbmaj7]\n"
"[Bb]\n"
"[Bbadd9]\n"
"[Bbaug], [Daug], [Gbaug]\n"
"[Bb9]\n"
"[Bbsus4]\n"
"[Ebm]\n"
"[Ab9], [Ebm6]\n"
"[Ebm7], [Gb6]\n"
"[Cm7], [Eb6]\n"
"[Eb7]\n"
"[Abadd9]\n"
"[Ebsus2]\n"
"[Gb7]\n"
"[Bsus2], [Gbsus4]\n"
"[Bdim]\n"
"[Bm]\n"
"[Bmaj7]\n"
"[B]\n"
"[Badd9]\n"
"[Baug]\n"
"[Abm]\n"
"[Bsus4], [Esus2]\n"
"[E6]")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html