Regular Expression bei replace

Bizarrus

Bekanntes Mitglied
Hallo :)

Ich versuche bei einem String einen Teil per replace zu entfernen, bekomme die Regular Expression aber in Java nicht hin.

Der String schaut folgendermaßen aus:
|1~1356688608||2~1356688611||3~1356688612||4~1356688614||5~1356688615||6~1356688616|
Und setzt sich wie folgt zusammen:
|ID~UNIX_TIMESTAMP|

Es soll nur ein Teil entfernt, werden wo die ID bekannt ist.

Beispiel:
Java:
int id = 5;
string.replaceAll("|" + id + "~([^|]*)|", "");

Java:
int id = 5;
string.replaceAll("\\|" + id + "~([0-9]+)\\|g?", "");

Ich habe zwar mit RegXp bereits unter PHP und auch Javascript gearbeitet gehabt, nur aber unter Java noch nicht.

Der jeweilige String der entfernt werden soll, soll nur einmalig entfernt werden, egal ob die genannte ID mehrfach vorhanden ist. Hierbei wäre also ggf. replaceAll ein falscher Ansatz, oder?
 
N

nillehammer

Gast
Der jeweilige String der entfernt werden soll, soll nur einmalig entfernt werden, egal ob die genannte ID mehrfach vorhanden ist. Hierbei wäre also ggf. replaceAll ein falscher Ansatz, oder?
:)Musste ich etwas schmunzeln. Was glaubst Du? Ist "einmalig" ein Widerspruch zu "all"? Die Alternative, die Du suchst könnte übrigens die Methode
Code:
replaceFirst(...)
sein
 

Bizarrus

Bekanntes Mitglied
Danke schon einmal für die Methode :)
Ja, replaceAll heißt ja "Ersetze Alle", schon klar :D

Hatte es auch erst einmal probiert gehabt, ob die Regular Expression dort funktioniert, aber ohne erfolgt. Könntest du mir vielleicht sagen, was hier vielleicht schief läuft?
 
N

nillehammer

Gast
In einem anderen länglichen Post zum Thema habe ich zu schrittweisem Vorgehen geraten. Fang erstmal mit einem Teststring und einer einfachen Regex an, z.B. "\\|", teste, bei Erfolg baue den nächsten Teil dazu. So kommst du recht schnell zum Ziel. Deine zweite Expression aus dem Ursprungspost sieht schon ganz gut aus. Nur das "g?" ist fragwürdig. Ich meine, das gehört weg. Was hattest Du denn damit vor?
 

Bizarrus

Bekanntes Mitglied
Des g? hatte ich aus einem RegXp tester.
Hatte ich im netz gefunden gehabt und (da ich es nicht so hinbekommen habe) es mal über des Tool gemacht gehabt. Dort hatte es "funktioniert" gehabt und daher kommt auch das "g?".
 
N

nillehammer

Gast
Das sieht mir sehr nach einem Beispiel für die Linux-Kommandozeile aus (evtl. ein awk oder sed Beispiel?). Bei Java-Regexen ist das kleine g (zumal ohne Escape-Zeichen verwendet) genau das, ein kleines g. Haben Dir denn die bisherigen Tipps geholfen? Oder gibt's noch Probleme. Dann wäre das Posten Deines aktuellen Versuchs sicher eine gute Idee.
 

Bizarrus

Bekanntes Mitglied
Egal was ich "herumprobiere", ein resultat gibt es nicht.

Original: |1~1356688608||2~1356688611||3~1356688612||4~1356688614||5~1356688615||6~1356688616||7~1356688618||8~1356688620||9~1356688622||10~1356688623||494~1356688624||493~1356688625||492~1356688626||491~1356688628||402~1356688713|

RegXP: \|3~([0-9]+)\|

Nachher: |1~1356688608||2~1356688611||3~1356688612||4~1356688614||5~1356688615||6~1356688616||7~1356688618||8~1356688620||9~1356688622||10~1356688623||494~1356688624||493~1356688625||492~1356688626||491~1356688628||402~1356688713|

Ich habe schon mehrere Sachen probiert. Escapen von ~, escapes weglassen, beim Unix-timestamp mal etwas eher unpassende Dinge probiert wie (.+), (.?), ([^\\|]+),... Irgdnwie will es aber nicht greifen.
 
N

nillehammer

Gast
Ich glaube nicht, dass es an der Regex liegt, sondern daran, dass Du danach wieder die variable
Code:
string
ausliest. replaceFirst(...) gibt den neuen String zurück. Den musst Du dir in einer Variablen speichern und dann den weiterverwenden. Nachfolgendes Codebeispiel sollte alle Fragen klären:
Java:
  public static void main(String[] args) throws Exception {

    String regex = "\\|1~[\\d]+\\|";

    String eingabe = "|1~1356688608||2~1356688611||3~1356688612||4~1356688614||5";
    // Beliebter Fehler, replaceXXX verändert nicht den String,
    // auf dem es aufgerufen wurde (Strings sind übrigens unveränderliche Objekte)
    // Es gibt den veränderten String zurück.
    String replacteEingabe = eingabe.replaceFirst(regex, "");
    
    System.out.println(replacteEingabe);

  }
 
T

tröööt

Gast
stimmt ... jetzt wo es erwähnt wird ist in deinem code oben nirgends eine neu-zuweisung zu erkennen ...

Strings sind IMMUTABLE ... also un-veränderlich ... ALLE methoden die den String irgendwie verändern geben ein neues objekt zurück ... das alte bleibt allerdings unverändert ...
Java:
string.replaceAll();
macht demzufolge genau NICHTS ... da das ergebnis nicht weiterverarbeitet wird ... korrekt muss es so lauten
Java:
string=string.replaceAll();
 

Bizarrus

Bekanntes Mitglied
Ach bin ich doof. Ja, danke - Des hab ich nun auch geckeckt xD
die Methode hat ja ein return-Wert mit den "neuen" Inhalten.

Ok, ich war da zu dem Zeitpunkz anscheinend etwas müde :D
 

faetzminator

Gesperrter Benutzer
Java:
Pattern p = Pattern.compile("\\|\\d+~(\\d+)\\|");
// ...
Matcher m = p.matcher(input);
List<String> ids = new ArrayList<String>();
while (m.find()) {
    ids.add(m.group(1));
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Dimax Erste Schritte Regular Expression Java Basics - Anfänger-Themen 12
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
O Regular Expression Java Basics - Anfänger-Themen 4
F Hilfe Regular Expression Grouping Value Java Basics - Anfänger-Themen 3
Y Was macht folgende Regular Expression Java Basics - Anfänger-Themen 2
S regular expression - suche nach | Java Basics - Anfänger-Themen 10
M Regular Expression - Passwort - aufeinanderfolgende Zeichen Java Basics - Anfänger-Themen 3
S regular expression - bekomme leerzeichen nicht raus Java Basics - Anfänger-Themen 3
J Frage zu Regular Expression Java Basics - Anfänger-Themen 2
P Passwort überprüfen mit regular Expression Java Basics - Anfänger-Themen 4
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
Burny91 Compiler-Fehler Regular Expressions matchen nicht korrekt Java Basics - Anfänger-Themen 5
R regular expressions Java Basics - Anfänger-Themen 3
eykarhorn Escapen in Regular Expressions Java Basics - Anfänger-Themen 7
G Regular expressions Java Basics - Anfänger-Themen 6
G Regular expressions Java Basics - Anfänger-Themen 3
D Regular Expressions Java Basics - Anfänger-Themen 2
G Regular Expressions Java Basics - Anfänger-Themen 3
P Regular expressions: Liste? Java Basics - Anfänger-Themen 7
J Regular Expressions Java Basics - Anfänger-Themen 5
richrich99 error: illegal start of expression Java Basics - Anfänger-Themen 10
I String Expression mit Java validieren (true / false) Java Basics - Anfänger-Themen 34
M Java 8 Lambda Expression Java Basics - Anfänger-Themen 1
J Compiler-Fehler Illegal Start of expression / '/'expected Java Basics - Anfänger-Themen 3
T Not a Statement/Illegal Start of expression bei for Anweisung Java Basics - Anfänger-Themen 6
K Lambda-Expression Java Basics - Anfänger-Themen 4
P ,,Illegal start of expression,, Java Basics - Anfänger-Themen 3
G Reg Expression Java Basics - Anfänger-Themen 6
Z constant expression required Java Basics - Anfänger-Themen 6
K illegal starts of expression Java Basics - Anfänger-Themen 2
S Compiler-Fehler illegal start of expression Java Basics - Anfänger-Themen 4
P illegal start of expression wie löse ich das? Java Basics - Anfänger-Themen 2
P expression tree Java Basics - Anfänger-Themen 4
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
X Compiler-Fehler illegal start of expression Java Basics - Anfänger-Themen 9
T Expression Tree.. identifier + Grundaufbau? Java Basics - Anfänger-Themen 2
P Illegal start of expression Java Basics - Anfänger-Themen 8
O Illegal start of expression Java Basics - Anfänger-Themen 3
L Illegal start of expression? Java Basics - Anfänger-Themen 4
S HTML Regularer Expression Java Basics - Anfänger-Themen 20
R GUI mit if-Verzweigung kombiniert - Illegal start of expression (Dringend) Java Basics - Anfänger-Themen 7
S illegal start of expression Java Basics - Anfänger-Themen 2
B Wieso ein Fehler? illegal Starts of expression? Java Basics - Anfänger-Themen 12
M [Hibernate] "Illegal start of expression"-Fehler b Java Basics - Anfänger-Themen 2
D "Illegal Start of Expression" und "; expected Java Basics - Anfänger-Themen 3
G Immer wieder illegal start of expression Java Basics - Anfänger-Themen 15
M regüläre Ausdrücke, die String - Variablen und Expression Java Basics - Anfänger-Themen 5
D Expression Trees Java Basics - Anfänger-Themen 3
E illegal start of expression Java Basics - Anfänger-Themen 4
I Expression-Fehler Java Basics - Anfänger-Themen 2
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
B illegal start of expression Java Basics - Anfänger-Themen 6
S illegal start of expression Java Basics - Anfänger-Themen 2
D switch case must be constant expression Java Basics - Anfänger-Themen 7
L illegal start of expression? Java Basics - Anfänger-Themen 19
F Einem Array Werte zuweisen. (illegal start of expression) Java Basics - Anfänger-Themen 4
J Fehlersuche - illegal start of expression Java Basics - Anfänger-Themen 3
D Illegal start of expression - nur warum ? Java Basics - Anfänger-Themen 3
G Fehler: Illegal Expression. Was mache ich falsch? Java Basics - Anfänger-Themen 4
T Methodenerror:"Illegal start of expression" Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
monsterherz Replace mit Scan Java Basics - Anfänger-Themen 20
monsterherz replace Java Basics - Anfänger-Themen 12
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Replace mit Hilfe von ArrayLists Java Basics - Anfänger-Themen 6
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
M Verschlüsselung mit replace() Java Basics - Anfänger-Themen 35
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
D kann man vor dem CSVRecord, replace Anweisung anwenden ? Java Basics - Anfänger-Themen 2
M replace Methode für Buchstaben Java Basics - Anfänger-Themen 29
J .replace mit Arraylisten Java Basics - Anfänger-Themen 4
Ananaskirsche Variablen Replace funktioniert nicht Java Basics - Anfänger-Themen 7
M Problem mit Array und replace Java Basics - Anfänger-Themen 3
P Replace zählen Java Basics - Anfänger-Themen 4
P replace[Frage] Java Basics - Anfänger-Themen 2
V String replace ? Java Basics - Anfänger-Themen 6
J Erste Schritte replace von minus Zeichen wird nicht gemacht Java Basics - Anfänger-Themen 7
S string.replace funktioniert nicht Java Basics - Anfänger-Themen 10
U String.replace mit Umlauten Java Basics - Anfänger-Themen 14
N Methoden mehrere replace hintereinander geht nicht ? Java Basics - Anfänger-Themen 2
R String Replace für JUnit Java Basics - Anfänger-Themen 19
M Replace mit fromIndex Java Basics - Anfänger-Themen 6
V Nochmal Hilfe - Replace Methode Java Basics - Anfänger-Themen 2
B Problem mit replace() Java Basics - Anfänger-Themen 4
I replace(char, char) funktioniert nicht Java Basics - Anfänger-Themen 8
0 String split und replace geht nicht Java Basics - Anfänger-Themen 17
A mehrere replace in einem string Java Basics - Anfänger-Themen 3
H replace funktioniert nicht Java Basics - Anfänger-Themen 4
S String filtern mit replace -> Problem Java Basics - Anfänger-Themen 6
T Regulärer Ausruck mit replace Java Basics - Anfänger-Themen 3
M String.replace Java Basics - Anfänger-Themen 2
M replace html string Java Basics - Anfänger-Themen 3
G String.replace Java Basics - Anfänger-Themen 3
J Find and replace Java Basics - Anfänger-Themen 3
D Strings : XY.replace(); ! Java Basics - Anfänger-Themen 6
D String mit replace bearbeiten Java Basics - Anfänger-Themen 2
G string.replace und charset Java Basics - Anfänger-Themen 2
D Probleme mit der String Methode replace() Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben