[Java] [RegEx] Komma innerhalb von Anführungszeichen auslassen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von S1l3ntk1ll, 15. November 2012 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. November 2012
    [RegEx] Komma innerhalb von Anführungszeichen auslassen

    Mahlzeit zusammen, folgendes Problem:

    Ich habe folgendes Beispiel:

    42, "ich bin, ein test"

    der String soll nun folgendermaßen per String.split() aufgeteilt werden:

    42
    "ich bin, ein test"

    Nun brauche ich also einen RegEx, der das Komma an sich finder, aber NICHT innerhalb von ""

    Da ich selbst da nicht so der Profi bin brech ich mir da sowieso bloss einen bei ab und Frage darum hier mal die lieben Leute

    Danke schonmal!
     
    1 Person gefällt das.
  2. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    da tust du dir ohne regex wesentlich leichter
     
  3. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    was haste da denn für ne idee? ich hab so auf die schnelle keine lösung sonst gefunden...
     
  4. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    über den text iterieren und wenn man auf ein komma trifft, sollte dir

    Code:
    anzahl_bisher_gefundene_anführungszeichen modulo 2 = 0
    das leben erleichtern.
     
  5. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    nene, das is ja nur ein beispiel, in meinen richtigen problem vorort sind die Strings mehrere Hundert zeichen lang und das problem kann unbekannt oft auftreten!
     
  6. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    was mit dem von mir gelieferten tip kein problem darstellt (und auch bei anderen möglichkeiten kein problem darstellen sollte)
     
  7. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    wie soll das denn funktioniern? folgendes beispiel:

    42, "ich bin, text1", "ich bin, text2", 44, 7, 3, 99, "ich bin, text3"

    da geht das doch nicht mit modulo 2? Dann fliegt mir ja alles um die ohren!
     
  8. 15. November 2012
    Zuletzt bearbeitet: 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    Langsam:

    Errechne jeweils einen Hash der Strings und lege diesen dann in einer HashMap ab.
    Den Hash fügst du dann in deinen Ausgangswert ein.

    Statt einem Hash kannst du natürlich auch den Numerischen Index eines Sets verwenden.

    Beispiel:

    IN:
    Code:
    1234, "hallo, welt"
    OUT:
    Code:
    1234, "ffa7b2e2af7675380c2a2d47be5ef612"
    Jetzt kannst du den Text ohne Probleme mit "," trennen.
    Anschließend durchläufst du das Ergebnis wieder und fügst die Strings wieder ein.

    Schnell:

    Schreib deine eigene "split" Funktion, die korrekt mit Strings umgehen kann.
     
    1 Person gefällt das.
  9. 15. November 2012
    Zuletzt bearbeitet: 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    Also deine Beispiele klappten mit diesem Regex:
    Code:
    ([a-zA-Z0-9]+|"[a-zA-Z0-9\s,]+"),?
    Musst dann immer in der Gruppe 1 (Gruppe 0 wäre mit Komma) schauen. Das ist immer das, was vor einem Komma steht. Egal ob nur eine Zahl, ein Wort oder ein String sammt "".

    greez

    //edit: ggf. noch weitere Sonderzeichen in die 2. eckige Klammer nach dem Komma einfügen, die noch vorkommen könnten.
    Man könnte in der ersten eckigen Klammer auch nur [0-9] stehen lassen, wenn bekannt ist, dass entweder immer ein String mit "" vorkommt, oder eine Zahl.
     
    1 Person gefällt das.
  10. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    fliegt mir echt super um die ohren: Edit fiddle - JSFiddle
     
  11. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    das mit dem Hash ist an sich ne super Idee, nur ich bekomme die Daten so als String aus einer Datenbank, und da steht der String halt schon so drinne :/

    und warum eigene "split" Funktion? das normale String.split kann doch eigentlich RegEx benutzen, und irgendwie sollte das mit RegEx umzusetzen sein, mein Test-RegEx der noch nicht funktionert sieht momentan folgendermaßen aus:

    ,[^\".*,.*\"]

    der funktioniert aber leider noch nicht...
     
  12. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    da fehlt aber der "ich bin, text3" String!
     
  13. 15. November 2012
    Zuletzt bearbeitet: 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    Statt "inQuotations" zu erhöhen, könnte man auch mit einem boolean arbeiten, welches man bei einem Fund von '"' einfach negiert. Das erspart die Abfrage mittels Modulo darunter.

    Ansonsten ist das wohl die optimale Lösung.

    Edit fiddle - JSFiddle
     
  14. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    du solltest der aufgabe gewachsen sein, diesen bug selbst zu fixen - ansonsten spreche ich deinem arbeitgeber mein mitleid aus.

    edit: Edit fiddle - JSFiddle
     
    1 Person gefällt das.
  15. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    ach nun versteh ich das erst! shame on me! ich dachte du suchst nach den , und machst modulo 2... klar mit den anführungszeichen! ...

    Ich danke für die tolle Lösung!

    Dann mach ich hier jetzt mal zu, danke an alle!
     
  16. 15. November 2012
    AW: [RegEx] Komma innerhalb von Anführungszeichen auslassen

    Wie gesagt, versuch das:

    Edit fiddle - JSFiddle

    Sind wirklich nur 2-3 Zeilen, die du brauchst.

    greez
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.