"abcbcbc" =~ m[ a ( [^c]* c [^c]* c [^c]* ) c ]x and print "'$1'";; 'bcbcb' ## or "abcbcbc" =~ m[a((?:[^c]*c){2}[^c]*)c] and print "'$1'";; 'bcbcb'