Laden...

Nützliche Regex-Pattern

Erstellt von TheBrainiac vor 15 Jahren Letzter Beitrag vor 14 Jahren 9.409 Views
TheBrainiac Themenstarter:in
795 Beiträge seit 2006
vor 15 Jahren
Nützliche Regex-Pattern

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

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
M
125 Beiträge seit 2008
vor 15 Jahren
Gute Idee

E-Mail-Adresse:

^[\w\.-]{1,}@[\w\.-]{2,}\.\w{2,3}$

deutsche Postleitzahl:

^d{5}$
3.971 Beiträge seit 2006
vor 15 Jahren

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...

M
125 Beiträge seit 2008
vor 14 Jahren

Ich habe eine richtig geniale Seite zu dem Thema gefunden:
Regular Expressions Libary

Gruß
mrdjoker

5.742 Beiträge seit 2007
vor 14 Jahren

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 🙂

390 Beiträge seit 2008
vor 14 Jahren

Für float/double/decimal Zahlen: ***?[0-9]+([.][0-9]+)?[/b]

using Skill

5.742 Beiträge seit 2007
vor 14 Jahren

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.

390 Beiträge seit 2008
vor 14 Jahren

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

Gelöschter Account
vor 14 Jahren

Hier noch eine Seite die mir doch SEHR weitergeholfen hat:

http://www.txt2re.com/

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