'*' bedeutet null oder mehr Übereinstimmungen des vorherigen Zeichens. So wird jeder leere String durch ein "e" ersetzt.
Wahrscheinlich möchten Sie stattdessen "+" verwenden:
replaceAll("B+", "e")
Sie wollen dies für Ihr Muster:
%Vor%Und Ihr Code wäre:
%Vor%Das "*" entspricht "Null oder mehr" - und "Null" enthält das Nichts, das vor dem B ist, sowie zwischen allen anderen Zeichen.
Ich habe über einen Monat bei einem großen Technologieunternehmen gearbeitet, indem ich einen Bug mit * (splat!) in regulären Ausdrücken behoben habe. Wir haben ein wenig bekanntes UNIX-Betriebssystem beibehalten. Mein Kopf explodierte fast, weil er ZERO-Vorkommen einer Begegnung mit einem Charakter entspricht. Sprechen Sie über einen harten Bug, den Sie durch Ihre eigenen Nachbildungen verstehen können. Wir waren in einigen Fällen doppelt substituierend. Ich konnte nicht herausfinden, warum der Code falsch war, aber ich konnte Code hinzufügen, der den speziellen (falschen) Fall auffing und Double Subbing verhinderte und keine der Utilities, die ihn beinhalteten (einschließlich sed und awk), kaputt machte. Ich war stolz, diesen Fehler behoben zu haben, aber wie bereits erwähnt.
Um Gottes willen, benutze einfach + !!!!