Regex mit Java String.replaceAll
Ich bin auf der Suche zu ersetzen, die eine java-string-Wert wie folgt. unten der code nicht funktioniert.
cleanInst.replaceAll("[<i>]", "");
cleanInst.replaceAll("[</i>]", "");
cleanInst.replaceAll("[//]", "/");
cleanInst.replaceAll("[\bPhysics Dept.\b]", "Physics Department");
cleanInst.replaceAll("[\b/n\b]", ";");
cleanInst.replaceAll("[\bDEPT\b]", "The Department");
cleanInst.replaceAll("[\bDEPT.\b]", "The Department");
cleanInst.replaceAll("[\bThe Dept.\b]", "The Department");
cleanInst.replaceAll("[\bthe dept.\b]", "The Department");
cleanInst.replaceAll("[\bThe Dept\b]", "The Department");
cleanInst.replaceAll("[\bthe dept\b]", "The Department");
cleanInst.replaceAll("[\bDept.\b]", "The Department");
cleanInst.replaceAll("[\bdept.\b]", "The Department");
cleanInst.replaceAll("[\bdept\b]", "The Department");
Was ist der einfachste Weg zur Erreichung der oben genannten ersetzen?
- was meinst du mit funktioniert nicht?
- Entfernen Sie die eckigen Klammern (
[
und]
). Diese sind für die Charakter-Klassen. Wenn etwas nicht funktioniert, Sie müssen um genauer zu sein. - Sie sind sich bewusst, was für eine Charakter-Klasse ist in einem regex? regex.info
- Strings sind unveränderlich.
- und Kleinschreibung Ignorieren Modifikator würde die Arbeit für viele der
dept
ersetzt - Wie @SLaks hingewiesen hat: Strings sind unveränderlich. Ihr code wird nichts tun, wenn Sie nicht speichern den Rückgabewert von
String.replaceAll()
irgendwo. Jetzt dein code hat nichts mit dem return-Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es eine Funktion, die kontinuierlich, die Sie verwenden, gibt es ein problem. Jeder reguläre Ausdruck kompiliert wird wieder für jeden Anruf. Am besten ist es, erstellen Sie Sie als Konstanten. Sie könnten so etwas haben.
Pattern
haben wir jetztMatcher
erstellte Objekte jedes mal. Wie ist das besser?werden sollte:
seit
String
- Klasse ist unveränderlich und ändert sich nicht, seinen inneren Zustand, d.h.replaceAll()
gibt eine neue Instanz, die die verschiedenen voncleanInst
.Sollten Sie Lesen eine grundlegende reguläre Ausdrücke tutorial.
Erst dann, was Sie versucht haben zu tun, können Sie das wie folgt:
Wahrscheinlich könnte man die Kette alle diejenigen ersetzen-Operationen (aber ich weiß nicht die korrekte Java-syntax für diese).
Über die Wortgrenzen:
\b
in der Regel nur dann Sinn macht, direkt vor oder nach ein alphanumerisches Zeichen.Beispielsweise
\b/n\b
passt nur/n
wenn es direkt vorangestellt ist ein alphanumerisches Zeichen und gefolgt von einem nicht-alphanumerischen Zeichen, so entspricht"a/n!"
aber nicht"foo /n bar"
./n
soll\n