![]() |
![]() |
|
|
|||||||
| 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) | |
|
|