[REQ]RegEx

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/reqregex_209406/page_1 - zur Vollversion wechseln!


BlockBuster schrieb am 07.08.2009 um 10:43

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 schrieb am 07.08.2009 um 10:47

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 schrieb am 07.08.2009 um 10:55

Also ich verwende es in C#.
(Leider funktioniert dein Ausdruck nicht. :()


COLOSSUS schrieb am 07.08.2009 um 10:58

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 schrieb am 07.08.2009 um 11:11

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!


that schrieb am 07.08.2009 um 11:51

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 schrieb am 07.08.2009 um 12:11

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 schrieb am 07.08.2009 um 12:57

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 schrieb am 07.08.2009 um 13:35

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:




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2024