For /^(a(?1)?b)$/, it can match the pattern of ab, aabb, aaabbb, aaaabbbb etc.
/^(a(?1)?b)$/
(?1) recurses the 1st subpattern but why need to put "?" after i