Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.07.2012, 09:49

Regex - Frage

Hallo Zusammen

Ich brauche einen Regex um einen String zu prüfen. Nur komme ich nicht wirklich draus mit Regex. Es gib tzuviele Zeichen :P

Der String kommt. bzw. sollte so kommen: "120,-20,50".
Kurz gesagt, es sind yxz - Koordinaten. Diese 3 Teile (durch KOmma getrennt), können beliebige Zahlen sein (<> 0), mit Kommastellen, etc.

Wie sieht ein Regex dafür aus?

Hoffe mir kann jemand helfen, danke und Gruss
Master Chief

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

09.07.2012, 09:52

\s*([-+]?[0-9]*\.?[0-9]+)\s*,\s*([-+]?[0-9]*\.?[0-9]+)\s*,\s*([-+]?[0-9]*\.?[0-9]+)\s*

3

09.07.2012, 10:17

Wow, Hammer. Dankeschön =)

Kannst du mir erklären, wofür diese Zeichen stehen: \s* ??

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

09.07.2012, 10:22

Wenn's nur prüfen und nicht auslesen ist reicht auch sowas:

Quellcode

1
(?:\-?\d+\s*,\s*){2}\-?\d+

bzw. wenn es float/double Werte sind:

Quellcode

1
(?:\-?\d+(?:\.\d+)?\s*,\s*){2}\-?\d+(?:\.\d+)?


\s* steht für eine beliebige Anzahl an Whitespaces.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

09.07.2012, 10:25

einfach mal auf Wikipedia vorbei schauen oder eine Suchmaschine deiner Wahl bemühen dürfte reichen

zusammengefasst:
\s steht für Whitespace-Zeichen (Leerzeichen, Zeilenumbruch(?) und Tabulator)
* steht für die Anzahl (0-unbegrenzt)

@David:
da muss ich spontan an einen wikiartikel denken, den ich vor einiger Zeit angefangen habe ^^

dein Ausdruck lässt Zahlen, wie 000001.0 oder 0.0, zu ;)
und anscheinend werden Zahlen ohne Nachkommastellen nicht angenommen
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

6

09.07.2012, 10:36

Danke euch =)

Ich brauche diesen Ausdruck für ein XML Schema Definition (falls es jemand intressiert =)

<xsd:simpleType name="Type_Vertex">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\s*([-+]?[0-9]*\.?[0-9]+)\s*,\s*([-+]?[0-9]*\.?[0-9]+)\s*,\s*([-+]?[0-9]*\.?[0-9]+)\s*"/>
</xsd:restriction>
</xsd:simpleType>

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

7

09.07.2012, 10:38

Du hättest auch einfach als typ eine Liste aus float nehmen können, dann hättest du zwar keine Kommas sondern Leerzeichen gehabt, aber ansonsten das gleiche erreicht ;)

8

09.07.2012, 10:47

Ja, schon klar. Nur ist das XML klar definiert und dort müssen nunmal halt Kommas sein =)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

09.07.2012, 11:01

dein Ausdruck lässt Zahlen, wie 000001.0 oder 0.0, zu ;)

Mich würde das nicht stören.

und anscheinend werden Zahlen ohne Nachkommastellen nicht angenommen

Ich hab's nicht getestet, aber das darf eigentlich nicht sein.
Der Punkt ist optional.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

10

09.07.2012, 11:21

dein Ausdruck lässt Zahlen, wie 000001.0 oder 0.0, zu ;)

Mich würde das nicht stören.

ich denke nicht, dass es jemanden stören dürfte, allerdings könnte es beim Auswerten probleme geben, wenn entsprechende Parse-Funktionen/-Methoden nicht mit führenden Nullen umgehen können

und anscheinend werden Zahlen ohne Nachkommastellen nicht angenommen

Ich hab's nicht getestet, aber das darf eigentlich nicht sein.
Der Punkt ist optional.

ok, da habe ich nicht genug nachgedacht... x)

das einzige Problem, welches noch vorhanden ist, ist, dass 0 Werte noch zugelassen werden
allerdings dürfte ein entsprechender Ausdruck, der dies abfängt komplex genug werden... (wobei fraglich ist, ob 0 als Wert wirklich nicht zugelassen werden soll...)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige