Beschreibung:
Da mein RegexLab in letzter Zeit ziemlich oft gelaufen ist und ich mir einige Regex-Patterns selbst ausgedacht habe, die es leider schon gibt (Ich habe leider nur hier gesucht, nicht Mr. Google gefragt), hab ich mir gedacht, man könnte hier mal ein paar nützliche Regex-Pattern als Sammel-Thread posten.
Ich mache dann mal den Anfang:
Uhrzeit
Beschreibung: Findet Uhrzeiten mit dem Format HH:MM(:SS)?
im Text.
Beispiel: 19:45:55
oder 20:15
\b(?<Time>(?<Hour>([01]?[0-9]|2[0-4])):(?<Minute>[0-5]?[0-9])(:(?<Second>[0-5]?[0-9]))?)\b
IPAddresse
Beschreibung: Findet gültige IPv4-Addressen im Format (0.0.0.0
- 255.255.255.255
) im Text.
Beispiel: 192.168.1.1
\b(?<IPAddress>(2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})(\.(2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})){3})\b
Hostaddresse mit Port
Beschreibung: Findet einen Hostnamen im Format (HostName OR IPAddress)(:Port)?
im Text.
Beispiel: www.mycsharp.de
oder 127.0.0.1:8080
\b(?<Host>(?<Hostname>(((2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})(\.(2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})){3})|(([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z](\.[a-z]{2,6})?)))(:(?<Port>\d+))?)\b
Url
Beschreibung: Prüft, ob ein String eine gültige URL mit dem Format protokoll://(user@)?sub.domain.tld(:port)?(/path/to/something)?
Beispiel: http://www.mycsharp.de/wbb2/thread.php?threadid=21580
oder ftp://user@example.com:21/data/
^(?<Url>((?<Protocol>\w+)://)?((?<User>([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+)@)?(?<Host>(((2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})(\.(2([0-4][0-9]|5[0-5])|[01]?[0-9]{1,2})){3})|(([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z](\.[a-z]{2,6})?)))(:(?<Port>\d+))?(?<Files>(/?)|(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?))$
Gruß, Christian.
P.S.: Bei meinen Regex-Pattern merkt vielleicht der eine oder andere, dass ich RegexOptions.ExplicitCapture bevorzuge!
Schlagwörter: regex pattern nützlich uhrzeit time ip ipaddress port hostname domain url
E-Mail-Adresse:
^[\w\.-]{1,}@[\w\.-]{2,}\.\w{2,3}$
deutsche Postleitzahl:
^d{5}$
Wobei man dazusagen muss, dass nicht alles mit Regex wirklich zu 100% abdeckbar ist. Beispiel E-Mail-Adresse.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Ich habe eine richtig geniale Seite zu dem Thema gefunden:
Regular Expressions Libary
Gruß
mrdjoker
E-Mail-Adresse:
Kürzlich bin ich auf I Knew How To Validate An Email Address Until I Read The RFC gestoßen; dein Pattern versagt da ebenfalls kläglich 🙂
Für float/double/decimal Zahlen: ***?[0-9]+([.][0-9]+)?[/b]
using Skill
Für float/double/decimal Zahlen: **
?[0-9]+([.][0-9]+)?[/b]
Man sollte aber aufpassen, wenn das Programm auch auf Systemen mit nicht-Englischen (ähm - wie nennt man diese Art eigentlich?!?) Zahlenformatierungen lauffähig sein soll bzw. wenn jemand 1,000,000 eingibt.
Also lieber double.TryParse etc. verwenden.
Also lieber double.TryParse etc. verwenden.
Für Benutzereingaben die länderspezifisch sein können sollte man natürlich Parse/TryParse verwenden. Um allerdings eine Textdatei mit Messwerten o.Ä. zu parsen kann das Pattern ganz nützlich sein! 😉
using Skill
Hier noch eine Seite die mir doch SEHR weitergeholfen hat:
einfach den text aus dem ihr regexen wollt eingeben, das was ihr braucht wählen,
den pattern dafür erstellen lassen, unten auf eure lieblingsprogrammiersprache klicken,
und schon habt ihr euren pattern , mit code-beispiel.
Ich hoffe das wra nützlich 0o