/(.)(?!((?<=(?!\1).(?=(?2)).|(?=\1)..))|.*\1)/s #### qr{ (? . ) #(?(?= (?&lookback) | .* \g{cur} ) # (?{print "cur($+{cur}) seen before or after\n"}) # (*FAIL) #) # simpler: (?! (?&lookback) | .* \g{cur} ) (?{ print "post: $-[0]<$&>$+[0]\n" }) (?(DEFINE) (? (?<= (? (?! \g{cur} ) . ) (?{ print " prev: <$+{prev}> / $-[0]<".($&//'-').">$+[0]\n" }) (?=(?&lookback)) . | (?= \g{cur} ) . . ) ) ) }msx