"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[REQ]RegEx

BlockBuster 07.08.2009 - 10:43 1347 8
Posts

BlockBuster

Little Overclocker
Registered: Jul 2005
Location: ...
Posts: 57
Hallo!
Also, ich suche eine bestimmte Regular Expression, um einen String zu splitten.
Der String sieht wie folgt aus:
Zitat
Telefon: 43 542 52 55 \n\r Mob.:43 54 32 12 \n\r Fax: 43 43 4343
Ich habe also schon folgende Regeln aufgestellt:
-Am Anfang steht eine beliebige Menge von Buchstaben.
-Danach kann ein Punkt kommen.
-Dann muss ein Doppelpunkt kommen.
-Danach eine beliebig lange Folge von numerischen Zeichen und Leerzeichen. -Am Ende ein CR, welches ich aber nicht benötige.

Zur Zeit habe ich diesen Ausdruck, der funktioniert aber nicht.
Zitat
[[A-Za-z]*\.?[:][0-9\s]*]

Hat da wer eine Ahnung?

tia&mfg

edit: typo&format

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11899
Code:
/([[:alpha:]]*\.?:[ 0-9]*)/
?

CR und LF sollten von der RegEx-Engine ohnehin nicht gematched werden, es sei denn, du schaltest das explizit an. (Was verwendest du denn?)

BlockBuster

Little Overclocker
Registered: Jul 2005
Location: ...
Posts: 57
Also ich verwende es in C#.
(Leider funktioniert dein Ausdruck nicht. :()

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11899
Ich glaube die MSFT Irgendwas Runtime implementiert zwar jede Menge Character Classes, die eigentlich nicht standardisiert sind, aber nicht jene aus POSIX. Bilde mir ein, das mal in der Online-Doku gelesen zu haben. Versuch':

Code:
/([a-zA-Z]*\.?:[ 0-9]*)/

Locale verwendest du sicher die richtige? Wenn du z. B. mit "POSIX" oder "C"-Locale deutsche Umlaute zu matchen versuchst, sind die evtl. nicht Element aus [a-zA-Z] usw.

BlockBuster

Little Overclocker
Registered: Jul 2005
Location: ...
Posts: 57
Die funktioniert leider auch nicht.

@locale: Die ist bei meinem Fall egal, da keine Umlaute im String vorkommen.

edit: Frage: Was bewirken die Ausdrücke /( und )/ am Anfang und Ende des Ausdrucks? Bin leider kompletter Anfänger bei dem Thema. Ich schaffe es gerade mal, einen Ausdruck für nen Email-Validator zu schreiben.

edit: Funktioniert jetzt. Vielen Dank!
Bearbeitet von BlockBuster am 07.08.2009, 11:31

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11326
Zitat von BlockBuster
edit: Funktioniert jetzt. Vielen Dank!

Mit "Funktioniert jetzt" kann der Nächste, der ein ähnliches Problem hat, nichts anfangen. Was hast du gemacht, dass es funktioniert?

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11899
Zitat von BlockBuster
Frage: Was bewirken die Ausdrücke /( und )/ am Anfang und Ende des Ausdrucks? Bin leider kompletter Anfänger bei dem Thema. Ich schaffe es gerade mal, einen Ausdruck für nen Email-Validator zu schreiben.

/ wird im Allgemeinen dazu verwendet, Anfang und Ende eines regulaeren Ausdrucks anzuzeigen. () umschlieszen in Extended Regular Expressions ein sg. Grouping, also einen (Sub)Match, den du dann gesondert ansprechen/weiterverwenden kannst.

Das mit dem E-Mail-Validator wuerde mich uebrigens wirklich beeindrucken :D (vgl. http://www.regular-expressions.info/email.html ab "The Official Standard: RFC 2822")

vanHell

Tauren Marine
Registered: May 2004
Location: Hell
Posts: 1017
ich schätz mal er hat die / am anfang und am ende gelöscht. In C# sowie in allen anderen Programmiersprachen wo RegEx nicht direkt im Sprachumfang verankert sind und somit als Strings übergeben werden sind die / überflüssig oder wirken Kontraproduktiv.

BlockBuster

Little Overclocker
Registered: Jul 2005
Location: ...
Posts: 57
Zitat von that
Mit "Funktioniert jetzt" kann der Nächste, der ein ähnliches Problem hat, nichts anfangen. Was hast du gemacht, dass es funktioniert?
Die Split-Methode richtig verstanden. :D

Also im Endeffekt war es ein simples
Code:
Regex.Split(nr, @"\r\n")
. :bash:
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz