$pattern =~ / ^ _* # 0 or more underscores to start ( (\d*|#*|\**)+ # Any combo of digits, #s, or *s (\[\d+\-\d\])? # Maybe a [x-y] ) (X*\.?\!?) # Zero or more Xs, and maybe a . or ! $ /gx;