• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Regex - jede mögliche Kombination finden

pad8626

New member
Hi.

Ich probiere seit 1-2 Tagen an was rum, wo ich mittlerweile denke das es vielleicht gar nicht mit regulären Ausdrücken machbar ist. Vielleicht steh ich auch aufm Schlauch.

Soooo...

Nehmen wir mal den simplen Fall an, ich habe einen String "aaaaaaaaaaaaaaaaaa"...
Jetzt will ich in meiner Ergebnissmenge folgendes haben =>

0 => a
1 => aa
2 => aaa
3 => aaaa

usw.

Ein anderes Beispiel:

"All dies macht die Cheetah 15K.6 zu einer Festplatte der Spitzenklasse für missionskritische SAN-, NAS-, Transactional-Processing- und Internetanwendungen. - Seagate Cheetah 15K.6 - Festplatte - 146.3 GB - SAS , Abmessungen (Breite x Tiefe x Höhe) - 10.2 cm x 14.7 cm x 2.6 cm , Schnittstellen Typ - Serial Attached SCSI , Datenübertragungsrate - 300 MBps , Typ - Festplatte - intern , Herstellergarantie - 5 Jahre Garantie"

Das "," betrachte ich als Seperator und den "-" als Subseperator...

Ich möchte quasi jedes vorkommen von ", <Attributname> - <Attributwert> ," finden. Leider weiß ich nicht wie ich die schon gefundenen ","s noch einmal verwenden kann.

Er würde bspw. finden => ", Schnittstellen Typ - Serial Attached SCSI ,"
aber nicht => ", Datenübertragungsrate - 300 MBps , "

Ich hoffe mein Problem ist halbwegs klar.

Grüße
 
Ich kann deiner Systematik nicht wirklich folgen. Wenn du eine Zeichenkette an einem Separator auftreilen willst, bietet sich String.split() an.
 
Die zwei Beispiele sollten mein Problem verdeutlichen... Nimm Beispiel 1 da ist kein Seperator, aber ein ähnliches Problem...
 
Ich kann das auch nciht nachvollziehen.
Beschreibe doch mal, was das ganze am Ende werden soll, damit man sich ein Bild machen kann.
 
Ich will aus einem String "aaaa" folgende Ergebnismenge bekommen:

0 => a
1 => aa
2 => aaa
3 => aaaa

Natürlich würde sich hier das einfache, zweifache, und dreifache "a" wiederholen...

Das was ich aber immer nur rausbekomme ist entweder

0 => aaaa

oder

0 => a
1 => a
2 => a
3 => a
 
So damit es noch ein wenig klarer wird:

Hier nen Screenshot zum 2. Beispiel siehe oben => screen1.png

Ich habe nun mehrere Seperatoren (also fällt split ausser mit X Schleifen tralala aus!!) und möchte das auch "Abmessungen", "Schnittstelle" und "Herstellergarantie" gefunden wird.
Dadurch, das ein Seperator "," oder ";" bereits gemacht wurde, wird er nicht noch einmal verwendet, aber das bräuchte ich hier.


Kann man es so evtl. nachvollziehen??
 
Kann man es so evtl. nachvollziehen??

Ich nicht. Ich versuch mal ein Schuß ins Blaue..
Mit
Code:
/([^-,;]+)/g
werden alle Zeichenketten gefunden die nicht -,; enthalten, und das ist eine ganze Menge.
0: All dies macht die Cheetah 15K.6 zu einer Festplatte der Spitzenklasse für missionskritische SAN
1: NAS
usw.
 
"Abmessungen", "Schnittstelle" und "Herstellergarantie" werden ja nur nicht gefunden, weil das "," oder ";" bereits schon einmal gematcht wurde. Und ich will das es aber auch noch einmal Bestandteil von "Abmessungen", "Schnittstelle" und "Herstellergarantie" sein kann.
 
"Abmessungen", "Schnittstelle" und "Herstellergarantie" werden in meinen obigen Beispiel gefunden!
Willst du ", Abmessungen", ", Schnittstellen .." und ",Herstellergarantie" finden ?
 
Ich will genau das finden was ich sowohl oben beschrieben habe, als auch in dem Screenshot blau markiert ist:

=> "Datenübertragungsrate - 300 MBps"

gleichfalls gilt das für die zwei anderen
 
Mein letzter Versuch...
mit
Code:
/(,[^,-]+-[^,]+)/g
finde ich
0: , Transactional-Processing- und Internetanwendungen. - Seagate Cheetah 15K.6 - Festplatte - 146.3 GB - SAS
1: , Abmessungen (Breite x Tiefe x Höhe) - 10.2 cm x 14.7 cm x 2.6 cm
2: , Schnittstellen Typ - Serial Attached SCSI
3: , Datenübertragungsrate - 300 MBps
4: , Typ - Festplatte - intern
5: , Herstellergarantie - 5 Jahre Garantie
 
Zurück
Oben