StringReplace and search out of one pattern
replace[str_] := StringReplace[ result1 = StringReplace[str, rulesTemp = {"BB"
-> "TwoA", "BBB" -> "ThreeB"}], {"B" -> " OneB ", Sequence @@ Reverse /@ rulesTemp}]
case 1
replace["BBB afsdfsdfs B sdfjsdfsdf BB sdfsadfasdf B"]
(*BB OneB afsdfsdfs OneB sdfjsdfsdf BB sdfsadfasdf OneB *)
The first "OneB"
in "BB OneB..."
is not expected.
Expect:
"BBB afsdfsdfs OneB sdfjsdfsdf BB sdfsadfasdf OneB"
case2
replace["BBBaf\\Left sdfsdfsBsdfjsdf\\Right sdfBBsdfsadfasdfB"]
(*BB OneB af\Left sdfsdfs OneB sdfjsdf\Right sdfBBsdfsadfasdf OneB *)
The above result is not expected.
I'd like only isolated "B"
(not "BB"
or "BBB..."
) to be replaced by "OneB"
.
And in case 2, "B"
in one StringPattern \\Left sdfsdfsBsdfjsdf \\Right
should be ignored.
Expect:
"BBB af\\Left sdfsdfsBsdfjsdf\\Right sdfBBsdfsadfasdf OneB "
case3 ignore one repeated pattern
replace["BBBaf\\Left sdfsdfsBsdfjsdf\\Right sdfBBsd\\Left sdfsdfsBsdfjsdf\\Right fsadfasdfB"]
(*BB OneB af\Left sdfsdfs OneB sdfjsdf\Right sdfBBsd\Left sdfsdfs OneB sdfjsdf\Right fsadfas df OneB *)
Maybe should use Except
or other.
"B" -> " OneB "
with some condition. $\endgroup$ – HyperGroups Jun 18 '13 at 0:24