The answer to you question is YES. You need just to add a on-liner parser to accomplish what you want. I have added such a parser and the new solver. Please find below the updated code.
buildLeft[randList_, ratorList_] :=
Append[Flatten@
Transpose[{Take[randList, Length@randList - 1], ratorList}] ,
Last@randList];
leftEqBuilder[randList_, ratorList_] :=
StringJoin[
If[MemberQ[randList, #], ToString@#, #] & /@
buildLeft[randList, ratorList]];
solver[randList_, ratorList_, rhs_] :=
Module[{ tup = Tuples[ratorList, Length[randList] - 1]},
leftEqBuilder[randList,
SelectFirst[tup,
ToExpression[leftEqBuilder[randList, #]] == rhs &]]];
solutionQ[str_, rhs_] := ToExpression@str == rhs;
parseExpression[expr_, dum_: "?"] :=
Module[{s =
StringSplit[StringReplace[expr, " " -> ""], "="]}, {StringSplit[
First@s, dum], Last@s}];
newSolver[strExpr_, ratorList_, dum_: "?"] :=
Module[{s = parseExpression[strExpr, dum]},
solver[ToExpression@HoldForm /@ First@s, ratorList,
ToExpression@Last@s] <> " = " <> Last@s];
Now let's test it.
newSolver["75*4?10?6?2*2=286", {"+", "-", "*", "/"}]
(* 75*4+10-6*2*2 = 286 *)
newSolver["1?1?1=3", {"+", "-", "*", "/"}]
(* 1+1+1 = 3 *)
Thanks,