emeriks
Goto Top

REGEX - Hilfe

Hi,
ich hasse RegEx und ich werde es wohl auch nie wirklich lernen. Es erschließt sich mir einfach nicht. Keine Chance ... face-sad

Ich will prüfen, ob ein String folgendem Muster entspricht.

ABC-DEF-*

XXX
3 fixe, vorgegebene Ziffern oder Buchstaben, groß oder klein

YYY
3 fixe, vorgegebene Ziffern oder Buchstaben, groß oder klein

Bindestrich
fix, vorgegebenes Trennzeichen "-"

Der Stern
beliebige Anzahl beliebiger Ziffern oder Buchstaben, groß oder klein

z.B.
XXX = ABC
YYY = DEF

dann
ABC-DEF-17-021 --> match
AB-DEF-17-021 --> no match (erste Gruppe vor dem Bindestrich keine 3 Zeichen)
ABC-DEF-1 --> match
ABC-DEF --> no match (Bindestrich am Ende fehlt, keine nachfolgen Zeichen nach dem Bindestrich)

Habe versucht
^ABC-DEF-$

Das liefert mir schon mal ein Match, wenn der String auch
ABC-DEF-
ist. Aber wie mache ich das hier mir dem Groß/Klein, auch wild durcheinander?

Das nachfolfgende "beliebige Anzahl beliebiger Ziffern oder Buchstaben, groß oder klein" bekomme ich gar nicht hin.

Ich teste (besser: bastele) mit solchen Seiten wie
https://regex101.com/
https://regexr.com/


Kann mir armen Irren bitte jemand helfen.

E.

Content-Key: 545864

Url: https://administrator.de/contentid/545864

Printed on: April 20, 2024 at 10:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Feb 11, 2020 updated at 16:37:46 (UTC)
Goto Top
Mitglied: 142970
142970 Feb 11, 2020 at 16:14:13 (UTC)
Goto Top
Member: Dani
Dani Feb 11, 2020 updated at 16:16:12 (UTC)
Goto Top
Moin,
Kann mir armen Irren bitte jemand helfen.
Gerne, ich versuch's mal: Link.


Gruß,
Dani

P.S. Wieder einmal zu langsam... face-sad
Member: SeaStorm
SeaStorm Feb 11, 2020 updated at 16:20:14 (UTC)
Goto Top
Hi
https://regex101.com/r/H82UjB/1

Sowas? Das flag macht hier die gross klein Geschichte. Ansonsten kannst du auch abcABC in den Klammern schreiben
.+ Hinten macht halt das ALLE Zeichen erlaubt sind. Wenn du wirklich nur Buchstaben und Zahlen willst, kannst du auch [a-z0-9]+ schreiben
Member: lcer00
lcer00 Feb 11, 2020 updated at 16:19:21 (UTC)
Goto Top
Member: emeriks
emeriks Feb 11, 2020 at 16:39:11 (UTC)
Goto Top
Danke für die zahlreichen Vorschläge.

Aber das passt noch nicht ganz.
Wahrscheinlich kann ich meine Frage auch vereinfachen. Ich will eine RegEx-Prüfung auf "Text beginnt mit gegeben String".

Bsp.:
Text soll beginnen mit "ABC-DEF-". Danach beliebig.

Darum meine Versuche mit "^ABC-DEF-$". Ich bekomme es nur nicht hin, dass da auch noch anderer Text folgen kann (und soll).
Das mit dem Ignorieren von Groß/Klein habe ich auch schon hinbekommen. Ich arbeite mit VB.Net und "Regex.Match" und da kann ich mit "RegexOptions.IgnoreCase" ja angeben, dass er das ignorieren soll.
Mitglied: 142970
Solution 142970 Feb 11, 2020 updated at 16:50:50 (UTC)
Goto Top
Ich will eine RegEx-Prüfung auf "Text beginnt mit gegeben String".
Dann lass das Dollarzeichen am Ende des Pattern weg, dat reicht dafür dann face-smile
^ABC-DEF-
Member: SeaStorm
SeaStorm Feb 11, 2020 at 18:42:04 (UTC)
Goto Top
Die Kriterien sind bei meinem alle erfüllt. Ausser ich verstehe nicht was du meinst
Member: mayho33
mayho33 Feb 11, 2020 updated at 21:23:04 (UTC)
Goto Top
Zitat von @emeriks:

Hi,
Hi,

ich hasse RegEx und ich werde es wohl auch nie wirklich lernen. Es erschließt sich mir einfach nicht. Keine Chance ... face-sad

Regex ist ist ein Biest, da gebe ich dir recht. RegEx ist aber auch extrem hilfreich.
Man muss es ja nicht bis ins letzte verstehen face-wink

Geh mal auf regexr.com Da kannst deine Patterns direkt mit den entsprechenden Strings prüfen.
Auch ein kleines Cheat-Sheet ist dabei.

Ich will prüfen, ob ein String folgendem Muster entspricht.

ABC-DEF-*

Wenn das Muster immer das gleiche ist kannst folgendes versuchen:

([A-z]{3,}\.[A-z]{3,}-[0-9]{1,})

Wen es nach dem Bindestrich beliebig sein soll, dann so:

([A-z]{3,}\.[A-z]{3,}-.*)


Alles in eckigen Klammer ist variabel und muss mindestens eines der angegebenen enthalten.

In den geschweiften Klammern legst du fest wie oft es mindestens vorkommen muss (vor dem Beistrich) und maximal vorkommen darf (nach dem Beistrich). Ist das Feld nach dem Beistrich leer, dann so oft wie es halt auftritt.

Der Punkt hat in RegEx eine Funktion. Du musst ihn also escapen. Das geht mit \

Ich bin in RegEx auch nicht der Pro. Mit regexr.com bin ich aber immer zum Ziel gekommen.

Grüße
Member: emeriks
emeriks Feb 12, 2020 updated at 07:10:02 (UTC)
Goto Top
Zitat von @142970:
Dann lass das Dollarzeichen am Ende des Pattern weg, dat reicht dafür dann face-smile
Danke. Das hilft mir jetzt am besten.


Allen anderen Danke für die Mühe.