![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Inventar
![]() Registriert seit: 08.02.2000
Beiträge: 1.696
|
![]() Hallo RegEx-Profis,
ich will aus dem folgenden oder ähnlichen Strings Code:
ok.ef = ok.de * mult * (4 - 2) / 2 + f.test1(3, f.test2()) Bei meinen bisherigen Versuchen wird immer die letzte Klammer "vergessen" ( [\w\.]+\(.*?\) ). Kann mir jemand sagen, wie ich dieses Problem löse? Danke
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you. |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Warte mal...
wenn ich dich richtig verstanden habe, hast du ein "nested parentheses" Problem? Also er matcht die ersten zwie Klammern, die zusammenpassen? function(param, funcasparam()) Vielleicht hilft die das weiter: \( ( (?>[^()]+) | (?R) )* \) First it matches an opening parenthesis. Then it matches any number of substrings which can either be a sequence of non- parentheses, or a recursive match of the pattern itself (i.e. a correctly parenthesized substring). Finally there is a closing parenthesis. HTH ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 08.02.2000
Beiträge: 1.696
|
![]() Puh, schaut ja wild aus... Danke, werd ich mir merken! Ich habs jetzt aber schon anders gelöst:
Code:
// search for next , or ) int p = 0; int c = 0; for(int i = 0; i < Param.Count; i++) { if((string)Param[i] == "(") p ++; // count ( if((string)Param[i] == "," && p == 0) // , found { // handle parameter c = i + 1; } if((string)Param[i] == ")" && p == 0) // matching ) found { // handle last parameter (if any) lineStack.Add("fend"); return true; } if((string)Param[i] == ")") p --; // count ) }
____________________________________
Sex is like hacking. You get in, you get out, and you hope you didnt leave something behind that can be traced back to you. |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() ahhh...
Ich hab am Anfang gar net kapiert was die Func eigentlich macht - jetzt hat der Blitz eingschlagn ![]() ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|