Entwickler-Ecke

Basistechnologien - Regex! Was bewirken diese Patter?


M-Cha - Mi 28.10.09 13:49
Titel: Regex! Was bewirken diese Patter?
Kann mir jemand genau sagen was diese Pattern machen?

Kann sie nicht wirklich entschlüsseln. Bei mir hackt es etwas mit dem pattern.

1.Patter


C#-Quelltext
1:
Regex test = new Regex(@"LINK_TO_([a-zA-Z0-9])*", RegexOptions.IgnoreCase);                    


2.Patter

C#-Quelltext
1:
Regex test = new Regex(@"define ([^\.]+) buffer ([^\.]+) for ([^\.]+).([^\.]+)", RegexOptions.IgnoreCase);                    


3.Patter


C#-Quelltext
1:
Regex test = new Regex(@"&global-define ([^\s]+) ([^\n]+)",RegexOptions.IgnoreCase);                    


Moderiert von user profile iconChristian S.: Titel geändert, Regex wird mit "g" und nicht mit "d" geschrieben


bakachan - Mi 28.10.09 14:11

das @ vor den Strings bedeutet das das \ nicht als Escape-Zeichen gewertet wird sondern als echtes \

C#-Quelltext
1:
Regex test = new Regex(@"LINK_TO_([a-zA-Z0-9])*", RegexOptions.IgnoreCase);                    

([a-zA-Z0-9])* -> beliebig viele Zeichen die entweder Kleinbuchstaben (a-z), Großbuchstaben (A-Z) oder Zahlen (0-9) sind in einer Gruppe


C#-Quelltext
1:
Regex test = new Regex(@"define ([^\.]+) buffer ([^\.]+) for ([^\.]+).([^\.]+)", RegexOptions.IgnoreCase);                    

[^\.]+ -> 1 oder mehrere Zeichen die kein Punkt sind
. -> beliebiges Zeichen


C#-Quelltext
1:
Regex test = new Regex(@"&global-define ([^\s]+) ([^\n]+)",RegexOptions.IgnoreCase);                    

([^\s]+) -> 1 oder mehrere Zeichen die kein Whitespace sind
([^\n]+) -> 1 oder mehrere Zeichen die kein Newline(Zeilenumbruch) sind

Der Rest ist einfach so wie es da steht.

Meine Empfehlung:
Regex-Tutorial [http://www.mycsharp.de/wbb2/thread.php?threadid=41009]


M-Cha - Mi 28.10.09 16:36

Zum ersten Regex versteh ich in dieser Anweisung nicht ganz den Sinn. (Ist eine Anwendung eines Vereins)


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
              Regex db = new Regex(@"LINK_TO_([a-zA-Z0-9])*", RegexOptions.IgnoreCase);

              MatchCollection MatchList = db.Matches(liste);
        
              foreach( Match mt in MatchList ) 
                {
                dialogs.Add(mt.Groups[0].Value.Substring( 8) );
              }


Was macht der genau?


bakachan - Mi 28.10.09 16:49

user profile iconM-Cha hat folgendes geschrieben Zum zitierten Posting springen:


C#-Quelltext
1:
dialogs.Add(mt.Groups[0].Value.Substring( 8) );                    


Was macht der genau?

Group 0 ist der gesammte gematchte Bereich
und es wird nur der Substring ab Index 8 (also nach LINK_TO_) genommen

ist unnötig kompliziert gemacht da ja im Regex schon eine extra Gruppe dafür definiert ist
man könnte also einfach

C#-Quelltext
1:
dialogs.Add(mt.Groups[1].Value);                    

dafür benutzen