Forum: PC-Programmierung suche regex pattern um diesen String zu erkennen


von regex (Gast)


Lesenswert?

Hallo;
kann mir jdm helfen das richtige regex pattern fuer diesen String zu 
finden?
1
p[zahl].b[zahl].val
wobei zahl von 0-20 erlaubt ist.
Danke

von Udo S. (urschmitt)


Lesenswert?

Warum schaust du nicht einfach wie es geht, dann weisst du es beim 
nächsten Mal.
Oder willst du jedes Mal wenn du so ein Problem hast hier im Forum 
nachfragen?

Da kannst du es testen:
https://regex101.com/
Unten rechts ist eine Kurzreferenz

Hier ein Tutorial:
https://www.regular-expressions.info/tutorial.html

von 🐧 DPA 🐧 (Gast)


Lesenswert?

1
/p\[[12]?[0-9]\].b\[[12]?[0-9]\].val/

von regex (Gast)


Lesenswert?

Weil ich es versucht habe aber nicht hinbekommen im speziellen die 
eckigen Klammern

von Joachim S. (oyo)


Lesenswert?

Probier's mal mit
1
p(1?[0-9]|20)\.b(1?[0-9]|20)\.val
Wobei die Lösung mglw. auch darauf ankommt, in welcher Umgebung Du den 
Ausdruck brauchst.

von Joachim S. (oyo)


Lesenswert?

🐧 DPA 🐧 schrieb:
>
1
> /p\[[12]?[0-9]\].b\[[12]?[0-9]\].val/
2
>

Ungefähr das war auch mein erster Gedanke, aber dann wäre ja bspw. auch 
der Wert 25 zulässig.

von Udo S. (urschmitt)


Lesenswert?

regex schrieb:
> Weil ich es versucht habe aber nicht hinbekommen im speziellen die
> eckigen Klammern

Dann zeige deinen Versuch, darauf kann man aufbauen.
Fange klein an und teste es schritt für schritt
Eckige Klammern muss man "escapen" um ein '[' zu erkennen musst du '\[' 
schreiben.
Abhängig davon in welcher Umgebung du bist musst du aber das "Escape" 
Zeichen "Backslash" auch nochmal escapen. Zum Beispiel in C# oder Java.
Dann sähe es so aus: "\\["

von Wer (Gast)


Lesenswert?

Joachim S. schrieb:
> dann wäre ja bspw. auch der Wert 25 zulässig.

Lesen: https://regular-expressions.mobi/numericranges.html?wlr=1

von Imonbln (Gast)


Lesenswert?

regex schrieb:
> wobei zahl von 0-20 erlaubt ist.
> Danke

muss der teil in der Regex geprüft werden, eine Regex die beliebige 
Zahlen findet ist viel leichter zu schreiben und ob die gefundene Zahl 
kleiner 20 ist lässt sich  Verhältnismäßig leicht rausfinden wenn man 
die entsprechende match group in ein int umwandelt.

von M. Н. (Gast)


Lesenswert?

Als erstes muss man wissen, welches "Regex" du haben willst. 
Verschiedene Regextools sprechen teils verschiedene Regex-Syntax.


Eine gute Webseite zum Überprüfen der Regexes ist: https://regex101.com/
Damit spiele ich immer bei komplizierteren Ausdrücken.

Deine Anforderung kann in PCRE regex somit folglich abgebildet werden:
1
p([1]?[0-9]|20)\.b([1]?[0-9]|20)\.val

Du kannst es dir hier ansehen: https://regex101.com/r/mqMUkw/1/
Da wird auch aufgeschlüsselt, wie die Regex funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.