Regulärer Ausdruck
Marga
- sonstiges
Hallo,
ist es möglich in einem RegEx anzugeben, dass entweder 0 oder 1 oder nichts (also quasi ein Leerstring) gematcht wird?
MfG
Marga
ist es möglich in einem RegEx anzugeben, dass entweder 0 oder 1 oder nichts (also quasi ein Leerstring) gematcht wird?
Ja.
Hello out there!
ist es möglich in einem RegEx anzugeben, dass entweder 0 oder 1 oder nichts (also quasi ein Leerstring) gematcht wird?
Ja.
Was denkst du wäre Margas nächste Frage?
See ya up the road,
Gunnar
Hello out there!
ist es möglich in einem RegEx anzugeben, dass entweder 0 oder 1
http://de.selfhtml.org/perl/sprache/regexpr.htm#zeichen 2.
oder nichts (also quasi ein Leerstring) gematcht wird?
Über die Länge: http://de.selfhtml.org/perl/sprache/regexpr.htm 10. f.
See ya up the road,
Gunnar
Hallo,
ist es möglich in einem RegEx anzugeben, dass entweder 0 oder 1 oder nichts gematcht wird?
Ja, und zwar so:
/[1]?$/
^ bezeichnet den Anfang des Strings
[01] bedeutet eines der Zeichen 0 oder 1
? heißt, dass [01] vorkommen kann, aber nicht muss
$ bezeichnet das Ende des Strings
=> Matcht, wenn der String "0" oder "1" oder "" ist.
Gruß, Don P
01 ↩︎
Hi
/[1]?$/
^ bezeichnet den Anfang des Strings
[01] bedeutet eines der Zeichen 0 oder 1
? heißt, dass [01] vorkommen kann, aber nicht muss
$ bezeichnet das Ende des Strings
Das hat mir schon mal weitergeholfen. Danke dafür.
Folgenden RegEx hab ich nun:
^([A-Za-z0-9]+);([01]?);([01]?);([01]?);[1]?;([01]);([01]);([01]);([01])
Der sollte eigentlich auf
STBK038N;1;1;1;;0;0;0;0;0;0
STBKNBWXP004;1;1;1;1;1;0;0;0;0;0
STBKWSWXP020;1;;0;;0;0;0;0;0;0
matchen, richtig?
Leider tut es das bei mir nicht.
Ich benutze Notepad++ dafür, da mir die Quelldaten nur in der CSV-Datei vorliegen.
MfG
Marga
01 ↩︎
Hallo,
^([A-Za-z0-9]+);([01]?);([01]?);([01]?);[1]?;([01]);([01]);([01]);([01])
Der sollte eigentlich auf
STBK038N;1;1;1;;0;0;0;0;0;0
STBKNBWXP004;1;1;1;1;1;0;0;0;0;0
STBKWSWXP020;1;;0;;0;0;0;0;0;0matchen, richtig?
Eigentlich ja. Aber das [1]? sieht etwas seltsam aus. Wenn nur ein einzelnes Zeichen in den eckigen Klammern steht, kann man die gleich weglassen, also einfach 1? schreiben.
Leider tut es das bei mir nicht.
Ich benutze Notepad++ dafür, da mir die Quelldaten nur in der CSV-Datei vorliegen.
Diese Syntax gilt auch für Notepad++. Bist du sicher, dass es nicht matcht?
Wenn ja: Fangen die fraglichen Zeilen auch wirklich mit "STBK" an?
Natürlich matcht der RegEx nicht nicht die ganze Zeile, da die [01]? -ähnlichen Patterns nur 8 mal im RegEx vorkommen, aber immer 10 davon vorghanden sind. Übrigens kannst du maximal 9 Klammerungen (...) verwenden, wenn du nachher z.B. mit \1, \2 ersetzen willst. Wenn nicht, lass die runden Klammern weg.
Gruß, Don P
Hi
^([A-Za-z0-9]+);([01]?);([01]?);([01]?);[1]?;([01]);([01]);([01]);([01])
Der sollte eigentlich auf
STBK038N;1;1;1;;0;0;0;0;0;0
STBKNBWXP004;1;1;1;1;1;0;0;0;0;0
STBKWSWXP020;1;;0;;0;0;0;0;0;0matchen, richtig?
Du hast auch die Möglichkeit nach einer gewissen Anzahl eine Ausdrucks zu Suchen. Somit wird dein Regex übersichtlicher:
/^([A-Za-z0-9]+)(;[01]?){10}$/
(Dieses Regex würde übrigens auf alle drei deiner Beispiele matchen, ungeachtet ob der Unterschied in deinem Regex zwischen den Klammern 1-3, 4 und dem Rest beabsichtigt war)
Das "{10}" bedeutet das der vorangehende Teil "(;[01]?)" 10mal vorkommen muss. Auch Ausdrücke wie {8,10} sind möglich, das würde dann bedeuten der vorangehende Teil muss zwischen 8 und 10mal vorkommen (inkl. 8 und 10).
gruss
lightfly
Hello out there!
Somit wird dein Regex übersichtlicher:
/^([A-Za-z0-9]+)(;[01]?){10}$/
Aber anders. An 4. Stelle soll ja nicht '[01]?' sein, sondern '1?'.
See ya up the road,
Gunnar
Hallo Gunnar
Somit wird dein Regex übersichtlicher:
/^([A-Za-z0-9]+)(;[01]?){10}$/Aber anders. An 4. Stelle soll ja nicht '[01]?' sein, sondern '1?'.
Darum habe ich darunter geschrieben:
[..], ungeachtet ob der Unterschied in deinem Regex zwischen den Klammern 1-3, 4 und dem Rest beabsichtigt war)
Es sollte jediglich ein Beispiel zur Benutzung sein und keine Fertige Lösung.
gruss
lightfly
Hello out there!
? heißt, dass [01] vorkommen kann, aber nicht muss
Ach ja, das gibt's ja auch noch (statt '{,1}').
Wie peinlich.
See ya up the road,
Gunnar
gudn tach!
/[1]?$/
^ bezeichnet den Anfang des Strings
[01] bedeutet eines der Zeichen 0 oder 1
? heißt, dass [01] vorkommen kann, aber nicht muss
$ bezeichnet das Ende des Strings
um genau zu sein: nein.
$ matcht das ende eines strings oder einen zeilenumbruch, dem das stringende folgt. besser ist stattdessen \z.
also: /[2]?\z/
prost
seth
aeh...
$ matcht das ende eines strings oder einen zeilenumbruch, dem das stringende folgt.
hmpf, sorry, schlechte formulierung.
besser: $ matcht das ende eines strings oder auf eine stelle, der ein zeilenumbruch folgt, dem das stringende folgt.
die essenz, dass \z exakter ist, bleibt aber bestehen.
prost
seth