           :spec/contains-key-pred
           (nth pred 2)))))
 
-(defn regex-failure? [_problem problem]
-  (contains? #{"Insufficient input" "Extra input"} (:reason problem)))
+(defn insufficient-input? [_problem problem]
+  (contains? #{"Insufficient input"} (:reason problem)))
+
+(defn extra-input? [_problem problem]
+  (contains? #{"Extra input"} (:reason problem)))
 
 (defn multi-spec [pred spec]
   (->> (s/form spec)

   (header-label "Missing spec")
   (expected-str _type spec-name val path problems opts)))

(defmethod problem-group-str :problem/regex-failure [_type spec-name val path problems opts]
  (s/assert ::singleton problems)
  (let [problem (first problems)]
    (printer/format


%s"
     (header-label "Syntax error")
     (insufficient-input spec-name val path problem))))

(defmethod problem-group-str :problem/extra-input [_type spec-name val path problems opts]
  (s/assert ::singleton problems)
  (let [problem (first problems)]
    (printer/format
     "%s

%s"
     (header-label "Syntax error")
     (extra-input spec-name val path))))


(defmethod problem-group-str :problem/fspec-exception-failure [_type spec-name val path problems opts]
  (s/assert ::singleton problems)
