/ ( (?<=prefix) (infix) (?=suffix) ) (??{ print $^N }) /gx #### / prefix (infix) suffix (??{ print $^N }) /gx #### / ( (?<=some(optional)?prefix) (infix) (?=suffix) ) (??{ print $^N }) /gx #### / some(optional)?prefix (infix) suffix (??{ print $^N }) /gx