[REQ]RegEx
BlockBuster 07.08.2009 - 10:43 1422 8
BlockBuster
Little Overclocker
|
Hallo! Also, ich suche eine bestimmte Regular Expression, um einen String zu splitten. Der String sieht wie folgt aus: 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. [[A-Za-z]*\.?[:][0-9\s]*] Hat da wer eine Ahnung? tia&mfg edit: typo&format
|
COLOSSUS
AdministratorGNUltra
|
/([[: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
|
Also ich verwende es in C#. (Leider funktioniert dein Ausdruck nicht. )
|
COLOSSUS
AdministratorGNUltra
|
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': /([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
|
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
ModeratorHoffnungsloser Optimist
|
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
AdministratorGNUltra
|
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 (vgl. http://www.regular-expressions.info/email.html ab "The Official Standard: RFC 2822")
|
vanHell
Tauren Marine
|
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
|
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. Also im Endeffekt war es ein simples Regex.Split(nr, @"\r\n")
.
|