WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.08.2002, 12:49   #1
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard Reg-Ex zum finden von Funktionen

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())
so durchsuchen, dass f.test1(...) als Aufruf gilt und f.test2() als reiner Parameter.
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.
SNo0py ist offline   Mit Zitat antworten
Alt 28.08.2002, 15:52   #2
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

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
käptn ist offline   Mit Zitat antworten
Alt 28.08.2002, 16:13   #3
SNo0py
Inventar
 
Registriert seit: 08.02.2000
Beiträge: 1.696


Standard

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 )
}
mfg, cu!
____________________________________
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.
SNo0py ist offline   Mit Zitat antworten
Alt 28.08.2002, 18:32   #4
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

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
käptn ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:11 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag